Android Studio-带阴影的椭圆形按钮

时间:2018-12-14 16:14:49

标签: android xml

我为椭圆形按钮设置了以下代码,并尝试向其添加黑色阴影。我首先实现了一个椭圆形按钮,并且按需要工作,当我添加<layered-list>时,它最终变成了一个完全黑色的椭圆形,其中第一项没有显示在任何层上。使它成为阴影并分层显示的任何帮助将不胜感激。

button_round.xml:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
   <item>
     <layer-list>
         <item>
             <shape android:shape="oval">
                 <solid android:color="@color/colorLightGreen"/>
                <size android:width="90dp" android:height="90dp"/>
             </shape>
         </item>
         <item>
             <shape android:shape="oval">
                 <solid android:color="@color/colorShadowDark"/>
                 <size android:width="150dp" android:height="150dp"/>
             </shape>
         </item>
     </layer-list>
  </item>
</selector>

layout \ activity_main.xml:

<Button
    android:id="@+id/start_button"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:background="@drawable/button_round"
    android:onClick="startNumberGuessing"
    android:text="@string/startNGString"
    app:elevation="10dp"
    app:layout_constraintBottom_toTopOf="@+id/textView"
    app:layout_constraintEnd_toStartOf="@+id/imageView"
    app:layout_constraintStart_toEndOf="@+id/imageView"
    app:layout_constraintTop_toBottomOf="@+id/textView"
    app:layout_constraintVertical_bias="0.714" />

3 个答案:

答案 0 :(得分:2)

请勿在按钮上使用形状,而应使用FloatingActionButton

以下代码显示了FloatingActionButton应如何出现在布局文件中:

<android.support.design.widget.FloatingActionButton
    android:id="@+id/fab"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="end|bottom"
    android:src="@drawable/ic_my_icon"
    android:layout_margin="16dp" />

FloatingActionButton默认具有椭圆格式和阴影

希望对您有所帮助!

答案 1 :(得分:1)

<layer-list>中的阴影椭圆之后放置浅绿色的椭圆,并使用填充使阴影椭圆可见。

下面是您可以用作其解决方案的xml代码。

<?xml version="1.0" encoding="utf-8"?>

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        <layer-list>
            <item>
                <shape android:shape="oval">
                    <solid android:color="@color/colorShadowDark" />
                    <padding android:bottom="15dp" android:left="15dp" android:right="15dp" android:top="15dp" />
                    <size android:width="200dp" android:height="200dp" />
                </shape>
            </item>
            <item>
                <shape android:shape="oval">
                    <solid android:color="@color/colorLightGreen" />
                </shape>
            </item>

        </layer-list>
    </item>
</selector>

答案 2 :(得分:1)

<android.support.v7.widget.CardView
android:layout_width="match_parent"
android:layout_height="40dp"
card_view:cardElevation="3dp"
card_view:cardCornerRadius="2dp"
card_view:cardBackgroundColor="#fff">

您可以将卡片视图用作按钮,通过增加cardCornerRadius尺寸将角变圆,并且cardElevation会保持卡片的阴影。

在使用卡片视图之前,请添加依赖项(使用最新版本的依赖项)

实现'com.android.support:cardview-v7:23.3'

此答案可以帮助您创建椭圆形按钮。