it-swarm.com.ru

Как создать Android фон кнопки SVG с возвышением?

Я пытался добиться кнопки, как на прикрепленном изображении, и для этого я создал SVG-градиент с тенью, чтобы он выглядел как высота, но когда этот svg применен к кнопке в качестве фона для рисования, он выглядит плоским и эффект ряби также пропал.

Я хочу добиться той же кнопки, что и на изображении ниже:  enter image description here

И вот мой код:

<Button
            Android:id="@+id/btn_login"
            Android:layout_width="match_parent"
            Android:layout_height="52dp"
            Android:layout_gravity="center_horizontal"
            Android:layout_marginTop="35dp"
            Android:enabled="false"
            Android:elevation="10dp"
            Android:translationZ="10dp"
            Android:stateListAnimator="@null"
            Android:background="@drawable/bg_gradient"
            Android:text="@string/btn_txt_login"
            Android:textColor="@Android:color/white"
            Android:textSize="18sp" />

Я использую файл SVG для создания градиента фона с закругленной границей. Любая помощь будет оценена.

4
Deep Shah

У меня есть решение для вас.

Добавьте это в вашу зависимость build.gradle (Module: app):

implementation 'com.Android.support:cardview-v7:27.1.1'

Теперь используйте макет CardView вместо Button:

<Android.support.v7.widget.CardView
    Android:layout_width="match_parent"
    Android:layout_height="wrap_content"
    Android:layout_margin="10dp"
    Android:foreground="?android:attr/selectableItemBackground"
    Android:clickable="true"
    card_view:cardCornerRadius="10dp"
    card_view:cardElevation="4dp">

<TextView
    Android:layout_width="match_parent"
    Android:layout_height="wrap_content"
    Android:padding="10dp"
    Android:gravity="center_vertical|center_horizontal"
    Android:textSize="18sp"
    Android:text="LOGIN"
    Android:textColor="@Android:color/white"
    Android:textStyle="bold"
    Android:background="@drawable/gradient"/>

</Android.support.v7.widget.CardView>

Создайте файл градиент.xml в папку для рисования:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:shape="rectangle">

    <gradient
        Android:startColor="#8b0ab7"
        Android:endColor="#0b85d0"
        Android:angle="0"/>

    <corners Android:radius="10dp"/>

</shape>
1
Ravi

Добавьте эти атрибуты, если они все еще не работают, используйте cardview

Android:clipChildren="false"
        Android:clipToPadding="false"

а вот твой код 

    <Button     Android:id="@+id/btn_login"
                Android:layout_width="match_parent"
                Android:layout_height="52dp"
                Android:layout_gravity="center_horizontal"
                Android:layout_marginTop="35dp"
                Android:enabled="false"
                Android:elevation="10dp"
                Android:translationZ="10dp"
                Android:stateListAnimator="@null"
                Android:clipChildren="false"
                Android:clipToPadding="false"
                Android:background="@drawable/bg_gradient"
                Android:text="@string/btn_txt_login"
                Android:textColor="@Android:color/white"
                Android:textSize="18sp" />
1
varun setia

Пожалуйста, попробуйте использовать следующий контент для рисования.

<?xml version="1.0" encoding="utf-8"?>
<ripple xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:color="@color/colorDefaultButtonRipple">
    <item>
        <layer-list>
            <item>
                <shape Android:shape="rectangle">
                    <solid Android:color="@Android:color/darker_gray" />
                    <corners Android:radius="15dp" />
                </shape>
            </item>
            <item Android:bottom="2dp" Android:left="2dp">
                <shape>
                    <gradient Android:angle="0" Android:endColor="#5789bc" Android:startColor="#8e6fa6" />
                    <corners Android:radius="15dp" />
                    <padding Android:bottom="10dp" Android:left="10dp" Android:right="10dp" Android:top="10dp" />
                </shape>
            </item>
        </layer-list>
    </item>
</ripple>

0
Anupa Dayaratne