TextView setTexSize 属性 在适配器中没有按预期工作

TextView setTexSize property not working as expected in an adapter

以下是我的 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.. 但如果我先点击其他两个 Fragments.. textSize 保持 不变为 35...

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

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

您可以直接在 if 语句中使用布尔值 - 您不需要执行 == true== false。此外,如果一个布尔值不为真,那么它就是假的,所以你不需要明确地检查它是否为真,然后检查它是否为假。也就是说,您的代码不需要那么复杂。

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

if (Fragment1.isActive) {
    textView.setTextSize(55);
} else if (Fragment2.isActive || Fragment3.isActive) {
    textView.setTextSize(35);
}

此外,您应该为文本大小使用维度资源而不是硬编码值,但这完全是一个不同的问题。

在 WordAdapter 中声明一个 Context

private Context mContext;

在 WordAdapter ArrayList 中..

mContext = context;

然后 .. 检查哪个 activity 是 运行 并通过以下代码相应地设置 TextSize:

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