选择一个textview并在4个textviews中同时更改其颜色

时间:2017-02-23 14:53:45

标签: java android

我有4个textviews,在4个textviews中,我必须从4个textviews中选择任何人,同时我还要同时更改textview的背景颜色(绿色)突出它。 每个textview都使用自定义可绘制背景。

这是textview xml:

       <TextView
            android:id="@+id/textview1"
            android:layout_width="match_parent"
            android:layout_height="@dimen/_55sdp"
            style="@style/ChoosePlan"
           android:background="@drawable/choose_plan_bg"
            android:text="@string/part_time_monthly"
           />

这意味着

setBackground(getResources().getDrawable(R.color.green));

不起作用。

所以我试过这样:

     private void changeColor()
    {
    Drawable tempDrawable = getResources().getDrawable(R.drawable.choose_plan_bg);
    LayerDrawable bubble = (LayerDrawable) tempDrawable; //(cast to root element in xml)
    GradientDrawable solidColor = (GradientDrawable) bubble.findDrawableByLayerId(R.id.outerRectangle);
    solidColor.setColor(getResources().getColor(R.color.green));
    textview1.setBackground(tempDrawable);
    textview1.setTextColor(getResources().getColor(R.color.white));
   }

和onClick事件我调用上面的方法:

   @Override
public void onClick(View view) {
    switch (view.getId()) {
        case R.id.tv_partTimeMonthly:
            changeColor();
            checkDoneBtnVisibile();
            break;
        case R.id.tv_partTimeAnnually:
            checkDoneBtnVisibile();
            break;
        case R.id.tv_fullTimeMonthly:
            checkDoneBtnVisibile();
            break;
        case R.id.tv_fullTimeAnually:
            checkDoneBtnVisibile();
            break;
        case R.id.iv_back_button:
            finish();
            break;
    }
    }

P.S:必须使用Textview(No ImageView)

我坚持了下来。能帮助我帮助我前进吗?

先谢谢

分享截图:

enter image description here

1 个答案:

答案 0 :(得分:1)

您只是在'\n'方法中更新 int main() { int numbers[50]; int i = 0; for( ; i < 50; i++) { int n; int conversion_count = scanf("%i", &n); if (conversion_count != 1) { break; // End-of-file, input error, non-numeric input } if (n == -1) { break; } numbers[i] = n; } printf("%d numbers read.\n", i); } 。如果您只想突出显示“仅”一个随时按下的textView,那么您可以尝试以下内容。

首先,我创建了一个方法,将textView作为其参数,将其背景更改回textview1。指定背景在drawable中的位置。

changeColour()

同样,changeColour方法:

choose_plan_bg

接下来,创建一个不同的private void changeColorBack(TextView textView) { textView.setBackground(getResources().getDrawable(R.drawable.choose_plan_bg)) } 并将textViews设置为此侦听器:

private void changeColor(TextView textView)
{
Drawable tempDrawable = getResources().getDrawable(R.drawable.choose_plan_bg);
LayerDrawable bubble = (LayerDrawable) tempDrawable; //(cast to root element in xml)
GradientDrawable solidColor = (GradientDrawable) bubble.findDrawableByLayerId(R.id.outerRectangle);
solidColor.setColor(getResources().getColor(R.color.green));
textView.setBackground(tempDrawable);
textView.setTextColor(getResources().getColor(R.color.white));


}

这仅选择按下的textView,并取消选择其他任何textView。