TextView 点击、获得焦点等 改变颜色

有的时候我们需要根据文字是否获取焦点而改变颜色。

做法如下:

在res目录下新建color文件夹,在文件夹下新建xxx.xml文件。

文件内容如下:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:color="@color/text_black" android:state_pressed="true" />
    <item android:color="@color/text_black" android:state_focused="true" />
    <item android:color="@color/text_black" android:state_selected="true" />
    <item android:color="@color/text_black" android:state_activated="true" />
    <item android:color="@color/text_gray_b0" />
</selector>

然后引用的时候:

android:textColor="@color/xxx"
就可以了。

要实现点击改变item内字体颜色,可以通过以下步骤进行: 1. 在item的布局文件中,设置一个TextView用于显示文字,并设置一个选择器作为其文本颜色,例如: ```xml <TextView android:id="@+id/item_text" android:layout_width="match_parent" android:layout_height="wrap_content" android:textColor="@drawable/text_color_selector" /> ``` 其中,`@drawable/text_color_selector`是一个选择器,可以定义不同状态下的文本颜色,例如: ```xml <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_pressed="true" android:color="@color/colorAccent" /> <item android:state_focused="true" android:color="@color/colorAccent" /> <item android:color="@android:color/black" /> </selector> ``` 上面的选择器定义了三个状态下的文本颜色,分别是按下状态下的`colorAccent`颜色,获取焦点状态下的`colorAccent`颜色,以及默认状态下的黑色。 2. 在RecyclerView的Adapter中,在ViewHolder的构造函数中获取TextView并设置点击事件,例如: ```java public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> { @Override public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View view = LayoutInflater.from(parent.getContext()) .inflate(R.layout.item_layout, parent, false); return new ViewHolder(view); } @Override public void onBindViewHolder(ViewHolder holder, int position) { // 设置item的文本 holder.textView.setText("Item " + position); } @Override public int getItemCount() { return 10; } static class ViewHolder extends RecyclerView.ViewHolder { TextView textView; ViewHolder(View itemView) { super(itemView); textView = itemView.findViewById(R.id.item_text); textView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // 改变文本颜色 textView.setTextColor(ContextCompat.getColor(textView.getContext(), R.color.colorAccent)); } }); } } } ``` 在ViewHolder中获取TextView并设置点击事件,当点击改变TextView的文本颜色为`colorAccent`颜色。注意,在获取颜色时需要使用`ContextCompat.getColor()`方法,这样可以兼容不同版本的Android系统。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值