繁体   English   中英

从4个文本视图中选择一个textview并同时更改其颜色

[英]select one textview and change its color at the same time out of 4 textviews

我有4个文本视图,在4个文本视图中,我必须从4个文本视图中选择任何一个,而且还必须同时更改文本视图的背景颜色(绿色)以突出显示它。 每个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;
    }
    }

PS:必须使用Textview(无ImageView)

我被困住了。 能否请你帮我前进。

提前致谢

共享屏幕截图:

在此处输入图片说明

您仅在changeColour()方法中更新textview1 如果您只想突出显示在任何时候按下的“仅”一个textView,则可以尝试以下操作。

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

private void changeColorBack(TextView textView)
{
      textView.setBackground(getResources().getDrawable(R.drawable.choose_plan_bg))
}

同样,changeColour方法:

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


}

接下来,创建一个不同的OnClickListener并将OnClickListener设置为此侦听器:

View.OnClickListener listener = new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            changeColorBack(textView1);
            changeColorBack(textView2);
            changeColorBack(textView3);
            changeColorBack(textView4);
            switch (v.getId()) {
                case R.id.textView1:
                    changeColor(textView1);
                    break;
                case R.id.textView2:
                    changeColor(textView2);
                    break;
                case R.id.textView3:
                    changeColor(textView3);
                    break;
                case R.id.textView4:
                    changeColor(textView4);
            }

        }
    };

    textView1.setOnClickListener(listener);
    textView2.setOnClickListener(listener);
    textView3.setOnClickListener(listener);
    textView4.setOnClickListener(listener);

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM