有背景颜色和波纹作用的机器人按钮

时间:2016-05-13 07:04:14

标签: android background ripple

我有一个Android按钮,我想给它一个背景颜色和两个涟漪效果

我的涟漪xml如下。

<?xml version="1.0" encoding="utf-8"?>
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:color="#BDA0CB"
    tools:targetApi="lollipop">
    <item android:id="@android:id/mask">
        <shape android:shape="rectangle">
            <solid android:color="#BDA0CB" />
        </shape>
    </item>
</ripple>

我的按钮是

 <Button android:id="@+id/Button_activity_login_ViewProfile" style="?android:textAppearanceSmall"
        android:layout_width="fill_parent" android:layout_height="wrap_content"
        android:layout_marginTop="16dp" android:text="Save"
        android:textStyle="bold"
        android:layout_marginLeft="@dimen/margin_left"
        android:layout_marginRight="@dimen/margin_right"
        android:textColor="#ffffffff"
        android:fontFamily="sans-serif"
        android:background="#ff7e51c2" />

为了给出涟漪效果,我必须删除背景颜色......有没有办法可以保留两者。

4 个答案:

答案 0 :(得分:7)

这可以通过在你的ripple.xml中添加android:drawable来实现。

首先将其添加到color.xml中。假设#ff7e51c2是您想要按钮的背景颜色。

array = ['title','date','height']
thing = Thing.new
array.each do |field|
   thing[field] = "I'll tell you later"
end
thing.save

然后为按钮背景创建一个drawable(/drawable/btn_bg.xml):

...
<color name="btn_bg_color">#ff7e51c2</color>
....

然后在ripple.xml中使用drawable:

<?xml version="1.0" encoding="utf-8"?><shape
xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle" >
<corners android:radius="2dp" />
<solid
    android:color="@color/btn_bg_color" />
</shape>

答案 1 :(得分:1)

在drawable文件夹中创建ripple_effect.xml

<?xml version="1.0" encoding="utf-8"?>
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:color="#1182bc"
    tools:targetApi="lollipop">
    <item android:id="@android:id/mask">
        <shape android:shape="rectangle">
            <solid android:color="#1182bc" />
        </shape>
    </item>
</ripple>

使用此xml作为您的视图背景,如下所示

android:background="@drawable/ripple_effect"
希望这会有所帮助..

答案 2 :(得分:0)

您可以在xml

中执行以下操作
<Button
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:background="@drawable/ripple"/>

更改ripple.xml文件夹中的drawable/,如下所示:

<ripple xmlns:android="http://schemas.android.com/apk/res/android" 
                  android:color="?android:colorControlHighlight">
    <item android:id="@android:id/mask">
        <shape android:shape="oval">
            <solid android:color="?android:colorAccent" />
        </shape>
    </item>

答案 3 :(得分:0)

创建两个不同版本的xml文件,以便它可以在Pre Lollipop设备上运行。

drawable / button_effect.xml: -

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
  <solid android:color="#3ab5d6"/>
  <corners android:radius="3dp"/>
</shape>

<强>绘制-V21 / button_effect.xml: -

<?xml version="1.0" encoding="utf-8"?>
<ripple xmlns:tools="http://schemas.android.com/tools"
    android:color="#635a5a"
    xmlns:android="http://schemas.android.com/apk/res/android"
    tools:targetApi="lollipop">
    <item android:drawable="@drawable/round_button" />
</ripple>

在drawable文件夹中创建shape drawable

drawable / round_button.xml: -

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <solid android:color="#3ab5d6"/>
    <corners android:radius="3dp"/>
</shape>

您可以在layout.xml中执行以下操作:

<Button
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:background="@drawable/button_effect"/>