如何有一个带有backgroundTint和角半径的按钮

时间:2018-08-25 07:35:19

标签: java android xml

我想要一个button,半径为backgroundTint的{​​{1}}:D 这是我定义的样式:

corner

还有<style xmlns:tools="http://schemas.android.com/tools" name="myButton" parent="Widget.AppCompat.Button.Colored"> <item name="android:background">@drawable/button_light</item> <item name="android:backgroundTint" tools:targetApi="lollipop">#e0e0e0</item> </style> 代码:

@drawable/button_light

然后将<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle"> <corners android:radius="15dp" /> <solid android:color="#FAFAFA" /> </shape> 应用于我想要的@style/myButton,结果是我有圆角但没有button的效果(ripple确实不起作用)。 我该怎么解决?

3 个答案:

答案 0 :(得分:1)

您可以使用layer-list实现此目的。

<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
   <item>
      <shape 
          android:shape="rectangle">
          <corners android:radius="15dp" />
          <solid android:color="#FAFAFA" />
      </shape>
   </item>
   <!-- Put any image or anything here as the drawable -->
   <item android:drawable="?attr/selectableItemBackground"/>
</layer-list>

答案 1 :(得分:0)

  

创建一个包含以下内容的drawable / butt.xml文件:

     ?xml version="1.0" encoding="utf-8"?>
        <selector xmlns:android="http://schemas.android.com/apk/res/android">
            <item android:state_pressed="false"> 
                <shape android:shape="rectangle">
                <corners android:radius="1000dp" />
                <solid android:color="#41ba7a" />
                <stroke
                    android:width="2dip"
                    android:color="#03ae3c" />
                <padding
                    android:bottom="4dp"
                    android:left="4dp"
                    android:right="4dp"
                    android:top="4dp" />
                </shape>
            </item>
            <item android:state_pressed="true"> 
                <shape android:shape="rectangle">
                <corners android:radius="1000dp" />
                <solid android:color="#3AA76D" />
                <stroke
                    android:width="2dip"
                    android:color="#03ae3c" />
                <padding
                    android:bottom="4dp"
                    android:left="4dp"
                    android:right="4dp"
                    android:top="4dp" />
                </shape>
            </item>
        </selector>
  

2:在代码中任何布局文件的按钮标签中使用它

<Button
    android:layout_width="220dp"
    android:layout_height="220dp"
    android:background="@drawable/butt"
    android:text="@string/btn_scan_qr"
    android:id="@+id/btn_scan_qr"
    android:textSize="15dp"
/>

答案 2 :(得分:0)

您可以在此库中使用:

material ripple effect

为按钮添加波纹效果,并为按钮添加形状

像这样:

<com.balysv.materialripple.MaterialRippleLayout
                            style="@style/RippleStyleBlack"
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:layout_marginRight="10dp"
                            >

                            <Button
                                android:id="@+id/call_btn"
                                android:layout_width="60dp"
                                android:layout_height="25dp"
                                style="@style/Base.Widget.AppCompat.Button.Borderless"
                                android:text="call"
                                android:textSize="12sp"
                                android:background="@drawable/call_btn_bg"
                                android:textColor="@color/deep_orange_600"
                                />

                        </com.balysv.materialripple.MaterialRippleLayout>