как создать заостренную кнопку на Android?

#android #xml #button

#Android #xml #кнопка

Вопрос:

Как я могу создать заостренную кнопку, например, кнопку возврата iPhone, в Android XML?

введите описание изображения здесь

Я хочу создать, используя вот так

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

    <item android:state_pressed="true" >
        <shape>
            <gradient
                android:startColor="#f8bb49"
                android:endColor="#f7941d"
                android:angle="270" />
            <stroke
                android:width="1dp"
                android:color="#8c8382" />
            <corners.....
 

Ответ №1:

Path и PathShape могут создавать все, что вы хотите. Наложив пару слоев вместе и используя градиентную заливку, вы можете создать эффект 3D-эффекта (утопленный).

Однако вам понадобится класс, который можно использовать для создания ссылки, которую можно нарисовать, если вы хотите иметь возможность использовать определение XML. Извините, я не разработал точный код, но это то, что я планирую сделать (именно так я нашел ваш вопрос).

Ответ №2:

Похоже, у вас есть изображение, с которым вы можете работать. Прочитайте документы по 9-patches, чтобы задать поля и области с изменяемым размером.

http://developer.android.com/guide/developing/tools/draw9patch.html

Комментарии:

1. Ваша фигура имеет 5 углов. Встроенные формы int — прямоугольник, овал, линия и кольцо. Вы все еще можете использовать свой селектор, просто создайте разные версии вашего графического ресурса с 9 патчами.

Ответ №3:

Создайте подобное изображение и используйте ImageButton вместо Button и , используйте это свойство для ImageButton

 android:background="@drawable/createdimage"
 

Ответ №4:

Я сделал это для следующей кнопки «Назад»

https://drive.google.com/file/d/0B1cySRpqElgyTkptOFpQa3NsdDQ

использование файлов XML:

left_arrow.xml:

 <?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
  <item >
        <rotate
            android:fromDegrees="-45"
            android:toDegrees="-45"
            android:pivotX="89%"
            android:pivotY="-22%" >
            <shape 
                android:shape="rectangle" >
                <stroke android:color="@color/calendarOrange" android:width="3dp"/>
                <solid
                    android:color="@color/drakBlue" />
            </shape>
        </rotate>
    </item> 
</layer-list>
 

button_body.xml:

 <?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
    <item android:left="-4dp">
        <shape   android:shape="rectangle" >
                <stroke android:color="@color/calendarOrange" android:width="3dp"/>
                <solid
                    android:color="@color/drakBlue" />
        </shape>
    </item>
</layer-list>
 

Как собрать их вместе:

 <LinearLayout 
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="horizontal"
    android:weightSum="1.0"
    >
    <RelativeLayout 
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:background="@drawable/left_arrow"
        android:layout_weight="0.7"
        >
    </RelativeLayout>
    <RelativeLayout 
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:background="@drawable/button_body"
        android:layout_weight="0.3"
    >

        <TextView 
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:textColor="@color/white"
            android:text="Back"
            android:gravity="center"
            android:textStyle="bold"
            android:textSize="22dp"
        />
    </RelativeLayout>
</LinearLayout>
 

PS: Возможно, вам потребуется изменить параметры android: pivotX и android: pivotY в зависимости от вашего макета conteiner