在Android v21中风格化材质button

我试图保持棒棒糖及以上(21+)以上的设备的材料devise连锁效果,并devise风格化button,使其在周围没有很大的空白/空间。

示例1:具有涟漪效应但有边距/间隙的button:

我喜欢这个版本的涟漪效应,但不是布局上的差距

示例2:没有波纹效果且没有边距/间隙的button:

我想要这个版本的布局,但是有涟漪效应

我想要Exmaple 2的布局,带有示例1中使用的涟漪效应。

我的styles-v21看起来像例1

 <?xml version="1.0" encoding="utf-8"?> <resources> ... other styles ... <style name="FacebookButton" parent="android:Widget.Material.Button"> <item name="android:colorButtonNormal">#ff3b5998</item> <item name="android:layout_margin">0dp</item> <item name="android:borderlessButtonStyle">@style/Widget.AppCompat.Button.Borderless</item> </style> <style name="GoogleButton" parent="android:Widget.Material.Button"> <item name="android:colorButtonNormal">#ffdd4b39</item> <item name="android:layout_margin">0dp</item> <item name="android:borderlessButtonStyle">@style/Widget.AppCompat.Button.Borderless</item> </style> <style name="TwitterButton" parent="android:Widget.Material.Button"> <item name="android:colorButtonNormal">#ff55acee</item> <item name="android:layout_margin">0dp</item> <item name="android:borderlessButtonStyle">@style/Widget.AppCompat.Button.Borderless</item> </style> <style name="SkipButton" parent="android:Widget.Material.Button"> <item name="android:colorButtonNormal">#ffdfa800</item> <item name="android:layout_margin">0dp</item> <item name="android:borderlessButtonStyle">@style/Widget.AppCompat.Button.Borderless</item> </style> </resources> 

例1中我的button布局是什么样的:

 <Button android:id="@+id/login_with_facebook" android:text="@string/login_with_facebook" android:fontFamily="sans-serif-condensed" android:textSize="16sp" android:drawableLeft="@drawable/facebook_icon" android:drawablePadding="25dp" android:layout_width="match_parent" android:layout_height="45dp" android:layout_weight="16.88" android:textColor="#ffffff" android:gravity="left|center_vertical" android:paddingLeft="45dp" android:theme="@style/FacebookButton" /> <Button android:id="@+id/login_with_google" android:text="@string/login_with_google" android:fontFamily="sans-serif-condensed" android:textSize="16sp" android:drawableLeft="@drawable/google_icon" android:drawablePadding="25dp" android:layout_width="match_parent" android:layout_height="45dp" android:layout_weight="16.88" android:textColor="#ffffffff" android:gravity="left|center_vertical" android:paddingLeft="45dp" android:theme="@style/GoogleButton" /> <Button android:id="@+id/twitter_login_button" android:text="@string/login_with_twitter" android:fontFamily="sans-serif-condensed" android:textSize="16sp" android:drawableLeft="@drawable/twitter_icon" android:drawablePadding="25dp" android:layout_height="45dp" android:gravity="left|center_vertical" android:layout_width="match_parent" android:layout_weight="16.88" android:textColor="#ffffffff" android:paddingLeft="45dp" android:theme="@style/TwitterButton" /> <Button android:id="@+id/login_anonymously" android:text="@string/login_anonymously" android:fontFamily="sans-serif-condensed" android:textSize="16sp" android:layout_width="fill_parent" android:layout_height="0dp" android:layout_weight="50" android:textColor="#ffffffff" android:theme="@style/SkipButton" /> 

任何想法如何使用我提出的波纹方法来实现示例2的外观? 任何资源或帮助的链接,将不胜感激。 谢谢。

额外:
我已经阅读了以下内容

  • Android中着色button与材质devise和AppCompat
  • 如何在Android中正确地devise材质button

Solutions Collecting From Web of "在Android v21中风格化材质button"

您可以使用android:background="?android:attr/selectableItemBackground"来获得矩形波纹。

或者,您可以创build自己的绘图。 以下是框架可选项目背景的XML:

绘制/ item_background_material.xml:

 <ripple xmlns:android="http://schemas.android.com/apk/res/android" android:color="?android:attr/colorControlHighlight"> <item android:id="@android:id/mask"> <color android:color="@android:color/white" /> </item> </ripple>