我的xml文件中有两个Text视图。
<TextView
android:layout_width="@dimen/margin_0dp"
android:layout_height="wrap_content"
android:layout_weight="0.5"
android:text="Trainings"
android:gravity="center"
android:background="@drawable/rounded_corner"
android:onClick="changeColor"
/>
<TextView
android:id="@+id/learning_programs"
android:layout_width="@dimen/margin_0dp"
android:layout_height="wrap_content"
android:layout_weight="0.5"
android:text="Learning Programs"
android:background="@drawable/rounded_corner"
android:gravity="center"
android:onClick="changeColor"/>
默认情况下,这两个背景颜色都是灰色的,由drawable rounded_corner.xml文件设置,当点击其中任何一个时,我希望它变为白色。 在我的Java文件中,我有
public void changeColor(){
this.setBackground(getResources().getColor((R.color.dark_grey_color)));
}
我知道我可以使用setOnclickListener并在基于View的按钮的id之间运行一个switch-case。
但要求就是这样。 那么,我该如何以这种方式实现呢?
感谢。
答案 0 :(得分:0)
只需添加以下代码snipet onclick textview
your_textview.setTextColor(ContextCompat.getColor(MainActivity.this, R.color.white));
答案 1 :(得分:0)
只需改变你的功能。用您想要的任何颜色或可绘制替换Color.BLUE
。因为当您从xml设置onClick时,它会将其视图传递给您可以使用view获取的活动,getId可以识别执行的单击。在您的情况下,您正在传递textview,以便将其转换为textview。
public void changeColor(View view) {
//((TextView) view).setBackgroundColor(Color.BLUE);
GradientDrawable bgShape = (GradientDrawable)((TextView) view).getBackground();
bgShape.setColor(Color.BLUE);
}
答案 2 :(得分:0)
如果您希望视图在保持其背景一旦被点击,那么您可以保留 TextView ,只需更改 changeColor上的背景颜色方法。如果您希望根据点击切换背景颜色,那么这是复选框行为。如果你想要这个最后的行为,那么按如下方式实现它:
复选框强>:
<CheckBox
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="0.5"
android:text="Trainings"
android:button="@null"
android:gravity="center"
android:background="@drawable/view_state"/>
<CheckBox
android:id="@+id/learning_programs"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="0.5"
android:text="Learning Programs"
android:button="@null"
android:background="@drawable/view_state"
android:gravity="center"/>
然后添加一个drawable来定义这些状态( drawable / view_state ):
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_checked="true">
<shape android:shape="rectangle">
<solid android:color="#000" /> <!-- clicked color -->
</shape>
</item>
<item android:state_checked="false">
<shape android:shape="rectangle">
<solid android:color="#FFF" /> <!-- default color -->
</shape>
</item>
</selector>