2017-04-27 36 views
0

创建自定义阴影的按钮,我在面临创建定制阴影为按钮问题的Android应用。我尝试了很多方法来解决这个问题,但我没有做到这一点。我想this documentation here包含解决方案,但我没有设法做到这一点。我的目标是制作像 these buttons have这样的阴影。如何在Android的

这是我的,我有我的按钮

<android.support.constraint.ConstraintLayout 
xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:app="http://schemas.android.com/apk/res-auto" 
xmlns:tools="http://schemas.android.com/tools" 
android:id="@+id/fragment_login" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
tools:context="com.egoregorov.payme1.LoginActivityFragment" 
tools:showIn="@layout/activity_login"> 

<android.support.constraint.ConstraintLayout 
    android:layout_width="0dp" 
    android:layout_height="wrap_content" 
    android:layout_marginEnd="8dp" 
    android:layout_marginLeft="8dp" 
    android:layout_marginRight="8dp" 
    android:layout_marginStart="8dp" 
    app:layout_constraintBottom_toBottomOf="parent" 
    app:layout_constraintHorizontal_bias="1.0" 
    app:layout_constraintLeft_toLeftOf="parent" 
    app:layout_constraintRight_toRightOf="parent" 
    app:layout_constraintTop_toTopOf="parent" 
    app:layout_constraintVertical_bias="0.36"> 

    <ImageView 
     android:id="@+id/login_app_icon" 
     android:layout_width="126dp" 
     android:layout_height="118dp" 
     android:layout_marginEnd="8dp" 
     android:layout_marginLeft="8dp" 
     android:layout_marginRight="8dp" 
     android:layout_marginStart="8dp" 
     android:layout_marginTop="8dp" 
     app:layout_constraintHorizontal_bias="0.501" 
     app:layout_constraintLeft_toLeftOf="parent" 
     app:layout_constraintRight_toRightOf="parent" 
     app:layout_constraintTop_toTopOf="parent" 
     app:srcCompat="@mipmap/ic_launcher_round"/> 

    <ImageView 
     android:id="@+id/login_email_icon" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_marginBottom="8dp" 
     android:layout_marginLeft="8dp" 
     android:layout_marginStart="8dp" 
     app:layout_constraintBottom_toBottomOf="@+id/login_email_inputLayout" 
     app:layout_constraintLeft_toLeftOf="parent" 
     app:srcCompat="@drawable/email_icon"/> 

    <android.support.design.widget.TextInputLayout 
     android:id="@+id/login_email_inputLayout" 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:layout_marginEnd="8dp" 
     android:layout_marginLeft="16dp" 
     android:layout_marginRight="8dp" 
     android:layout_marginStart="16dp" 
     android:layout_marginTop="24dp" 
     app:layout_constraintLeft_toRightOf="@+id/login_email_icon" 
     app:layout_constraintRight_toRightOf="parent" 
     app:layout_constraintTop_toBottomOf="@+id/login_app_icon"> 

     <EditText 
      android:id="@+id/login_email_textbox" 
      style="@style/Widget.AppCompat.EditText" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_weight="1" 
      android:ems="10" 
      android:hint="@string/email_hint" 
      android:inputType="textEmailAddress" 
      android:singleLine="true" 
      android:textColorLink="@color/colorPrimaryDark" 
      tools:layout_editor_absoluteX="8dp" 
      tools:layout_editor_absoluteY="-36dp"/> 
    </android.support.design.widget.TextInputLayout> 

    <ImageView 
     android:id="@+id/login_password_icon" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_marginBottom="8dp" 
     android:layout_marginLeft="8dp" 
     android:layout_marginStart="8dp" 
     app:layout_constraintBottom_toBottomOf="@+id/login_password_inputLayout" 
     app:layout_constraintLeft_toLeftOf="parent" 
     app:srcCompat="@drawable/password_icon"/> 

    <android.support.design.widget.TextInputLayout 
     android:id="@+id/login_password_inputLayout" 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:layout_marginEnd="8dp" 
     android:layout_marginLeft="16dp" 
     android:layout_marginRight="8dp" 
     android:layout_marginStart="16dp" 
     app:layout_constraintLeft_toRightOf="@+id/login_password_icon" 
     app:layout_constraintRight_toRightOf="parent" 
     app:layout_constraintTop_toBottomOf="@+id/login_email_inputLayout"> 

     <EditText 
      android:id="@+id/login_password_textbox" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_weight="1" 
      android:ems="10" 
      android:hint="@string/password_hint" 
      android:inputType="textPassword" 
      tools:layout_editor_absoluteX="30dp" 
      tools:layout_editor_absoluteY="300dp"/> 

    </android.support.design.widget.TextInputLayout> 


    <Button 
     android:id="@+id/login_logIn_button" 
     style="@style/Widget.AppCompat.Button.Colored" 
     android:layout_width="0dp" 
     android:layout_height="55dp" 
     android:layout_marginEnd="8dp" 
     android:layout_marginLeft="8dp" 
     android:layout_marginRight="8dp" 
     android:layout_marginStart="8dp" 
     android:layout_marginTop="16dp" 
     android:layout_weight="1" 
     android:elevation="24dp" 
     android:lineSpacingExtra="17sp" 
     android:text="@string/button_login" 
     android:textSize="17sp" 
     android:translationZ="@dimen/fab_margin" 
     app:backgroundTint="@color/logIn_button_color" 
     app:layout_constraintHorizontal_bias="0.0" 
     app:layout_constraintLeft_toLeftOf="parent" 
     app:layout_constraintRight_toRightOf="parent" 
     app:layout_constraintTop_toBottomOf="@+id/login_password_inputLayout"/> 


    <Button 
     android:id="@+id/login_signUp_button" 
     style="@style/Widget.AppCompat.Button.Colored" 
     android:layout_width="0dp" 
     android:layout_height="55dp" 
     android:layout_marginEnd="8dp" 
     android:layout_marginLeft="8dp" 
     android:layout_marginRight="8dp" 
     android:layout_marginStart="8dp" 
     android:elevation="24dp" 
     android:text="@string/login_signUp_button" 
     android:textSize="16sp" 
     app:backgroundTint="@color/signUp_button_color" 
     app:layout_constraintHorizontal_bias="0.0" 
     app:layout_constraintLeft_toLeftOf="parent" 
     app:layout_constraintRight_toRightOf="parent" 
     app:layout_constraintTop_toBottomOf="@+id/login_logIn_button"/> 

    <TextView 
     android:id="@+id/login_forgotYourPassword_textview" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_marginEnd="8dp" 
     android:layout_marginLeft="8dp" 
     android:layout_marginRight="8dp" 
     android:layout_marginStart="8dp" 
     android:layout_marginTop="8dp" 
     android:text="@string/login_forgotYourPassword_text" 
     android:textColor="@color/colorPrimaryDark" 
     app:layout_constraintHorizontal_bias="0.502" 
     app:layout_constraintLeft_toLeftOf="parent" 
     app:layout_constraintRight_toRightOf="parent" 
     app:layout_constraintTop_toBottomOf="@+id/login_signUp_button"/> 

</android.support.constraint.ConstraintLayout> 

真诚活动的XML,

叶戈尔

+0

您是否尝试使用按钮中的高度? –

+0

[It would not work](http://stackoverflow.com/a/27112143/5288316)。 –

+0

@DivyeshPatel是的,海拔在底部提供了阴影,但我需要在按钮右侧也有阴影 –

回答

0

选项1: 正如有人所说,创建自定义drawable文件夹中应该有一个图层列表作为根项目,应该包含一个项目作为矩形形状与透明度和其他我用阴影大小填充矩形形状。

选项2: 使用带阴影的透明背景创建9个补丁图像。

选项3: 使用CardView随着海拔

+0

选项2将是最好的。 1和3不会产生所需的效果。 – RobCo

+0

您能否告诉我如何创建9个修补程序映像以及如何使用它? –

+0

https://romannurik.github.io/AndroidAssetStudio/nine-patches.html#&sourceDensity=320&name=example – albeee

0

不完美的解决方案,但你可以尝试一下:

<?xml version="1.0" encoding="utf-8"?> 
<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item> 
     <shape android:shape="rectangle"> 
      <corners android:bottomLeftRadius="3dp" android:bottomRightRadius="3dp" 
       android:topLeftRadius="3dp" 
       /> 
      <solid android:color="#50000000"/> 
     </shape> 
    </item> 

    <item android:bottom="3dp" android:right="2dp"> 

     <shape android:shape="rectangle" > 


      <solid android:color="@color/colorAccent" /> 
     </shape> 
    </item> 
</layer-list> 

现在设置为按钮的背景

+0

现在我的按钮完全是白色的,边框很暗 –

+0

将@ color/colorAccent更改为您的按钮颜色 –

0

最佳网站创建9 patch shadow image

http://inloop.github.io/shadow4android/

+0

所以在创建并下载它,我该怎么办? –

+0

将它放在您的可绘制文件夹中,并在按钮或布局中将它称为Android:background =“@ drawable/ic_new_shadow” – albeee

0

这是非常有用的站点,用于以xml格式创建不同的视图元素。 可以easlly配置按钮和其他元素只是一些复选框

http://angrytools.com/android/button/

低于这个“设置阻止”你必须看到的例子如何将这个在您的项目。