我注意到属性?attr/selectableItemBackground
创建的效果仅显示我长时间点击视图的时间。但是我希望它能在每个水龙头上显示出来。
视图是可点击的,并且具有点击侦听器。
怎么做?
答案 0 :(得分:3)
我注意到Lollipop和Marshmallow之间的行为发生了变化:
这可能是问题吗?
我会坚持使用设备Look& amp;感觉,但你可以 尝试这个建议的解决方案:
https://stackoverflow.com/a/34167312/348378
或者改为使用库代替,也许就像这样:
答案 1 :(得分:2)
您可以通过设置视图的背景来实现此目的。首先,你必须在drawable和drawable-v21中创建一个 item_selector.xml drawable。 对于 drawable 文件夹 -
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/item_pressed" android:state_focused="true" android:state_pressed="true"/>
<item android:drawable="@drawable/item_pressed" android:state_focused="false" android:state_pressed="true"/>
<item android:drawable="@drawable/item_normal" android:state_focused="true"/>
<item android:drawable="@drawable/item_normal" android:state_focused="false" android:state_pressed="false"/>
</selector>
对于 drawable-v21 文件夹 -
<?xml version="1.0" encoding="utf-8"?>
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
android:color="?android:attr/colorControlHighlight" >
<item>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:drawable="@drawable/item_pressed"
android:state_focused="true"
android:state_pressed="true"/>
<item
android:drawable="@drawable/item_pressed"
android:state_focused="false"
android:state_pressed="true"/>
<item
android:drawable="@drawable/item_normal"
android:state_focused="true"/>
<item
android:drawable="@drawable/item_normal"
android:state_focused="false"
android:state_pressed="false"/>
</selector>
</item>
</ripple>
现在你需要做的就是在视图标签中加上 android:background =&#34; @ drawable / item_selector&#34; 。例如 -
<LinearLayout
android:id="@+id/traveller_select_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/item_selector"
android:orientation="vertical"
android:paddingBottom="10dp"
android:paddingTop="5dp">
<TextView
android:id="@+id/textTravellers"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="20dp"
android:text="@string/passengers"
android:textColor="@color/baggage_grey"
android:textSize="12sp"/>
</LinearLayout>
现在在drawable文件夹中创建 item_pressed.xml -
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle" >
<solid android:color="@color/filter_bg"/>
</shape>
可绘制文件夹中的 item_normal -
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" >
<solid android:color="@color/white"/>
</shape>
答案 2 :(得分:1)
没有你的代码,很难知道哪里出了问题。但是,由于我已经实现了这一点,请与您分享我所做的事情,也许您只是关注,可以帮助您找出问题。
在您看来需要点击涟漪
<TextView
android:id="@+id/your_view_id"
android:layout_width="match_parent"
android:layout_height="wrap_content
android:test="Testing View"
android:background="@drawable/below_drawable">
在/ drawable-v21文件夹中,您的unders_drawable.xml包含内容
<?xml version="1.0" encoding="utf-8"?>
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
android:color="@color/your_click_background_color">
<item android:id="@android:id/mask">
<shape android:shape="rectagle" >
<solid android:color="@android:color/your_mask_color" />
</shape>
</item>
</ripple>
由于以上仅针对棒棒糖(v21),如果你想对你的非棒棒糖产生一些影响(只显示颜色,但没有波纹)。您可以在/ drawable文件夹中包含below_drawable.xml文件。
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true">
<shape android:shape="rectangle">
<solid android:color="@color/your_click_background_color" />
</shape>
</item>
</selector>
希望这有帮助。