在我的应用中没有显示涟漪效果

时间:2015-08-03 10:11:37

标签: android android-appcompat ripple

我正在创建一个应用扩展AppCompatActivity。但我有一个问题:

未显示涟漪效果

我做错了吗?谢谢

的Manifest.xml

<activity 
        android:name="com.example.MainActivity"
        android:theme="@style/AppTheme.Toolbar"
        android:screenOrientation="nosensor" android:configChanges="keyboardHidden|orientation">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

styles.xml

<style name="AppTheme.Toolbar" parent="Theme.AppCompat.Light.NoActionBar">
    <item name="colorPrimary">@color/color_primary</item>
    <item name="colorPrimaryDark">@color/color_primary_dark</item>
    <item name="colorAccent">@color/color_accent</item>
</style>

MainActivity.java

public class MainActivity extends AppCompatActivity {

    ...
}

1 个答案:

答案 0 :(得分:0)

我们需要做的第一件事是创建一个新的涟漪选择器,它将包含我们的旧(略微修改过的)全息选择器:

drawabale / ripple_selector.xml

<?xml version="1.0" encoding="utf-8"?>
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
        android:color="?android:colorControlHighlight">
        <item android:id="@android:id/mask"      
        android:drawable="@drawable/xyz"/>
        <item android:drawable="@drawable/xyz"/>
</ripple>

新的ripple xml标签描述了我们的纹波应该是什么样的。

android:color - 定义涟漪的颜色。

我的主题中的

android:colorControlHighlight属性与我的主要强调色相匹配。这样,默认按钮的内置涟漪效果将获得相同的颜色。

id为@android的第一项:id / mask定义了我的涟漪的形状。如果我们不指定面具 - 形状将由所有其他leyers的形状决定。

现在我们可以使用这个drawable作为Buttons等的背景。

修改

为简单起见,请在drawable中创建它,并在Buttons等中用作背景。

<?xml version="1.0" encoding="utf-8"?>
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
    android:color="?attr/colorControlHighlight">
    <item android:drawable="?attr/colorPrimary"/>
</ripple>