首页 > 解决方案 > TextView setTexSize 属性在适配器中未按预期工作

问题描述

以下是我的 WordAdapter 的代码行

 public WordAdapter(Context context, ArrayList<Word> words, int colorResourceId) {
    super(context, 0, words);
    mColorResourceId = colorResourceId;
}

@Override
public View getView(final int position, View convertView, ViewGroup parent) {
    // Check if an existing view is being reused, otherwise inflate the view
    View listItemView = convertView;
    if (listItemView == null) {
        listItemView = LayoutInflater.from(getContext()).inflate(
                R.layout.list_item, parent, false);
    }

    final Word currentWord = getItem(position);

    TextView textView = (TextView) 
    listItemView.findViewById(R.id.text_view);

    textView.setText((currentWord.getTextId()));

    if (Fragment1.isActive == true){
        textView.setTextSize(55);

    } else if (Fragment1.isActive == false){
        textView.setTextSize(35);

    if (Fragment2.isActive == true) {
        textView.setTextSize(35);
      }else if (Fragment2.isActive == false){
        textView.setTextSize(35);

    if (Fragment3.isActive == true) {
        textView.setTextSize(35);
      }else if (Fragment3.isActive == false){
        textView.setTextSize(35);

    return listItemView;
}

但问题是我项目中的所有片段都更新为textSize 55 ...

我还注意到我在项目中的三个片段中的一个特殊之处.. 如果我单击第Fragment1一个片段,则所有片段都会将textSize 更新为 55 .. 但如果我先单击其他两个片段..textSize保持不变为 35。 ..

如果 Fragment1 在屏幕上处于活动状态,我想要的只是将TextSize 设置为 55,如果其他两个 Fragment 处于活动状态,则 textSize 应该为 35。

我在其他问题中读到,如果我使用我WordAdapter班级的上下文参数,它可能......喜欢使用context.getClass().getSimpleName()但不确定如何做......请指导我......

标签: androidandroid-fragmentsandroid-arrayadaptertextview

解决方案


在 WordAdapter 中声明一个 Context

private Context mContext;

在 WordAdapter ArrayList ..

mContext = context;

然后 .. 检查正在运行的活动并通过以下代码相应地设置 TextSize:

if (mContext.getClass().getSimpleName().equalsIgnoreCase("Activity1") || mContext.getClass().getSimpleName().equalsIgnoreCase("Activity3")) {
    onClickTextView.setTextSize(55);
} else {
    onClickTextView.setTextSize(35);
}

推荐阅读