[英]how to change textView color when scrolled on same color background?
[英]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.