gpt4 book ai didi

java - 从 4 个 TextView 中选择一个 TextView 并同时更改其颜色

转载 作者:行者123 更新时间:2023-12-01 08:50:51 27 4
gpt4 key购买 nike

我有4个 TextView ,在4个 TextView 中,我必须从4个 TextView 中选择任何人,而且我还必须同时更改 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(无ImageView)

我被困住了。您能帮助我插入我前进吗?

提前致谢

分享屏幕截图:

enter image description here

最佳答案

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

首先,我创建了一个方法,该方法采用 textView 作为其参数,将其背景更改回 choose_plan_bg。指定背景位于可绘制对象中的任何位置。

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 并将 textView 设置为此监听器:

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。

关于java - 从 4 个 TextView 中选择一个 TextView 并同时更改其颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42419126/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com