点击linearlayout,改变背景颜色

在没有手动设置这个布局的点击事件的时候

编写布局:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:background="@drawable/selector_list_item"
    android:clickable="true"
    >
    <TextView
        android:id="@+id/text_view_recycler_item"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:text="信息"
        android:layout_marginTop="10dp"
        android:layout_marginBottom="10dp"
        android:textSize="17dp"
        android:clickable="true"
         android:focusable="true"
/></LinearLayout>

需要在linearlayout加入clickable,和background,然后在drawable中编写selector_list_item文件,代码如下:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_focused="true" android:drawable="@color/red"/>
    <item android:state_pressed="true" android:drawable="@color/red" />
    <item android:drawable="@color/white"/>
</selector>
    <!--布局点击的效果图,点击前点击后-->



二、设置手动了这个布局的点击时间以后:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:background="@drawable/selector_list_item"
    android:clickable="true"
    android:focusable="true"
android:layout_marginTop="10dp" android:layout_marginBottom="10dp" android:id="@+id/layout" android:addStatesFromChildren="true" > <TextView android:id="@+id/text_view_recycler_item" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_gravity="center" android:text="信息" android:textSize="17dp" android:visibility="visible" /></LinearLayout>
重点:

    android:addStatesFromChildren="true"



重点二:

想要这个布局点击了很现实点击下去的效果,必须要加:

android:focusable="true"
android:clickable="true"

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要实现RecyclerView点击改变item的颜色,可以在RecyclerView的Adapter中设置点击事件,在点击事件中改变item的颜色。具体实现步骤如下: 1. 在item的布局文件中,设置一个根布局,并将需要改变颜色的子视图放在该布局中。例如,以下是一个item的布局文件: ```xml <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/item_layout" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" android:padding="16dp"> <TextView android:id="@+id/item_text" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Item" /> </LinearLayout> ``` 在该布局中,将TextView放在LinearLayout中,LinearLayout作为根布局。 2. 在RecyclerView的Adapter中,设置点击事件。在ViewHolder的构造函数中,获取item的根布局,并设置点击事件。例如,以下是一个RecyclerView的Adapter的代码: ```kotlin class MyAdapter(private val itemList: List<String>) : RecyclerView.Adapter<MyAdapter.ViewHolder>() { override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder { val view = LayoutInflater.from(parent.context).inflate(R.layout.item_layout, parent, false) return ViewHolder(view) } override fun onBindViewHolder(holder: ViewHolder, position: Int) { holder.bind(itemList[position]) } override fun getItemCount(): Int { return itemList.size } inner class ViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { private val itemLayout: LinearLayout = itemView.findViewById(R.id.item_layout) private val itemText: TextView = itemView.findViewById(R.id.item_text) init { itemLayout.setOnClickListener { val pos = adapterPosition if (pos != RecyclerView.NO_POSITION) { itemLayout.setBackgroundColor(ContextCompat.getColor(itemView.context, R.color.colorAccent)) itemText.setTextColor(ContextCompat.getColor(itemView.context, R.color.white)) } } } fun bind(item: String) { itemText.text = item } } } ``` 在ViewHolder中获取item的根布局和需要改变颜色的子视图。在根布局上设置点击事件,获取item的位置,然后通过`itemLayout.setBackgroundColor()`和`itemText.setTextColor()`方法改变item的颜色和TextView的颜色。注意,在获取颜色时需要使用`ContextCompat.getColor()`方法,这样可以兼容不同版本的Android系统。 这样,当用户点击item时,item的背景颜色和TextView的文本颜色就会改变

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值