代码之家  ›  专栏  ›  技术社区  ›  amit

textView settexSize属性在适配器中无法按预期工作

  •  0
  • amit  · 技术社区  · 6 年前

    下面是我的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;
    }
    

    但问题是,我的项目中的所有片段都用 文本大小55

    我还注意到我在项目中的三个片段中有一个奇怪的地方。如果我点击 Fragment1 首先,所有片段更新 文本大小为55 ……但如果我先点击另外两个片段… textSize 残余 不变为35

    如果fragment1在屏幕上处于活动状态,我只想将xtSize设置为55;如果其他两个片段处于活动状态,则textSize应该为35。

    我在其他问题中读到,如果我使用 WordAdapter 分类是可能的。喜欢使用 context.getClass().getSimpleName() 但我不确定怎么做…请引导我…

    2 回复  |  直到 6 年前
        1
  •  0
  •   Leo Aso    6 年前

    你可以直接在 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);
    }
    

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

        2
  •  0
  •   amit    6 年前

    在wordadapter中声明一个上下文

    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);
    }