簡體   English   中英

根據位置或標志更改顏色textview

[英]Change color textview based on position or flag

我已經基於數組值動態創建了textviews。

其顯示良好。 我的問題是,假設我數組中有5個值以及標志值(即0和1)

如果我單擊textview索引2,它包含標志'0'表示以紅色顯示,而其中一個索引包含'1'則需要以綠色顯示。

如何實現呢? 我已經嘗試了很多。

for (int i = 0; i < array.size(); i++) {
                final TextView textView = new TextView(Activity.this);
                int parentLayoutHeight = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP,
                        Constants.DRAWER_LIST_ITEM_LAYOUT_HEIGHT_DIP, getResources().getDisplayMetrics());
                LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, parentLayoutHeight);
                params.setMargins(0, 0, 0, 20);
                textView.setLayoutParams(params);
                textView.setText(array.get(i).getOptions());
                textView.setTag(array.get(i).getFlag());
                textView.setId(Integer.parseInt(array.get(i).getId()));
                textView.setGravity(Gravity.CENTER);
                textView.setTypeface(Typeface.SANS_SERIF);
                textView.setPadding(0, 20, 0, 20);
                textView.setTextSize(TypedValue.COMPLEX_UNIT_SP, Constants.DRAWER_LIST_ITEM_TEXT_SIZE_SP);
                textView.setBackgroundResource(R.drawable.rounded_rectangle_1);
                textView.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        textView.setTextColor(getResources().getColor(R.color.white));
                        for (int i = 0; i < array.size(); i++) {
                            if (parsedAnswers.get(i).getFlag().equalsIgnoreCase("0")){
                                textView.setBackgroundResource(R.drawable.rounded_rectangle_red);
                            }else{
                                textView.setBackgroundResource(R.drawable.rounded_rectangle_green);
                            }
                        }
                    }
                });
                mLayout.addView(textView);
            }

從您的示例:

public void onClick(View v) {
      textView.setTextColor(getResources().getColor(R.color.white));
      for (int i = 0; i < array.size(); i++) {
        if (parsedAnswers.get(i).getFlag().equalsIgnoreCase("0")){
          textView.setBackgroundResource(R.drawable.rounded_rectangle_red);
        }else{
          textView.setBackgroundResource(R.drawable.rounded_rectangle_green);
        }
      }
    }

我認為您需要的是textview的標簽,而不是執行循環,該循環鏈接到parsedAnswers,例如:

String tag = (String)textView.getTag();
if (tag.equalsIgnoreCase("0")){
    textView.setBackgroundResource(R.drawable.rounded_rectangle_red);
}else{
    textView.setBackgroundResource(R.drawable.rounded_rectangle_green);
}

如果數組是動態變化的,則只能像這樣設置內部位置:

textView.setTag(i);

在聽眾中

int position = (Integer)textView.getTag();
if (parsedAnswers.get(position).getFlag().equalsIgnoreCase("0")){
   textView.setBackgroundResource(R.drawable.rounded_rectangle_red);
}else{
    textView.setBackgroundResource(R.drawable.rounded_rectangle_green);
}

也可以更改文本的顏色而不是背景的顏色,可以使用textView.setTextColor(color)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM