?attr / selectableItemBackground效果仅在longtap上显示

时间:2015-12-26 00:19:43

标签: android material-design android-support-library

我注意到属性?attr/selectableItemBackground创建的效果仅显示我长时间点击视图的时间。但是我希望它能在每个水龙头上显示出来。

视图是可点击的,并且具有点击侦听器。

怎么做?

3 个答案:

答案 0 :(得分:3)

我注意到Lollipop和Marshmallow之间的行为发生了变化:

  • 棒棒糖 - 它会在压力下开始涟漪。
  • 棉花糖 - 涟漪从释放开始。

这可能是问题吗?

我会坚持使用设备Look& amp;感觉,但你可以 尝试这个建议的解决方案:

https://stackoverflow.com/a/34167312/348378

或者改为使用库代替,也许就像这样:

https://github.com/balysv/material-ripple

答案 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>

希望这有帮助。