Düzenleme (22.06.2016):
Appcompat kütüphanesi, orijinal yanıtı yayınladıktan sonra malzeme düğmelerini desteklemeye başladı. Bu gönderide yükseltilmiş ve düz düğmelerin en kolay uygulamasını görebilirsiniz.
Orijinal Yanıt:
Bu AppCompat düğmeyi desteklemediğinden, xml'yi arka plan olarak kullanabilirsiniz. Bunu yapmak için Android'in kaynak koduna bir göz attım ve malzeme düğmeleri şekillendirmek için ilgili dosyaları buldum.
1 - Materyal düğmesinin kaynaktan orijinal uygulanmasına bakın.
Android kaynak kodunda btn_default_material.xml dosyasına bir göz atın .
Dosyayı projeleriniz drawable-v21 klasörüne kopyalayabilirsiniz. Ama buradaki renk simgesine dokunmayın. Değiştirmeniz gereken dosya ikinci dosyadır.
çekilebilirdir-V21 / custom_btn.xml
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
android:color="?attr/colorControlHighlight">
<item android:drawable="@drawable/btn_default_mtrl_shape" />
</ripple>
2 - Orijinal malzeme düğmesinin şeklini alın
Bildiğiniz gibi, bu çekmecenin içinde kullanılan ve kaynak kodun bu dosyasında bulabileceğiniz bir şekil var .
<inset xmlns:android="http://schemas.android.com/apk/res/android"
android:insetLeft="@dimen/button_inset_horizontal_material"
android:insetTop="@dimen/button_inset_vertical_material"
android:insetRight="@dimen/button_inset_horizontal_material"
android:insetBottom="@dimen/button_inset_vertical_material">
<shape android:shape="rectangle">
<corners android:radius="@dimen/control_corner_material" />
<solid android:color="?attr/colorButtonNormal" />
<padding android:left="@dimen/button_padding_horizontal_material"
android:top="@dimen/button_padding_vertical_material"
android:right="@dimen/button_padding_horizontal_material"
android:bottom="@dimen/button_padding_vertical_material" />
</shape>
3 - Malzeme düğmesinin boyutlarını alma
Ve bu dosyada burada bulabileceğiniz bazı boyutlar var . Tüm dosyayı kopyalayıp değerler klasörünüze koyabilirsiniz . Bu, tüm düğmelere aynı boyutta (malzeme düğmelerinde kullanılan) uygulamak için önemlidir
4 - Eski sürümler için başka bir çekilebilir dosya oluşturun
Daha eski sürümler için aynı ada sahip başka bir çekmeceniz olmalıdır. Yönlendirmek yerine öğeleri doğrudan satır içine koyuyorum. Onlara referans vermek isteyebilirsiniz. Ama yine de, en önemli şey malzeme düğmesinin orijinal boyutlarıdır.
çekilebilir / custom_btn.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<!-- pressed state -->
<item android:state_pressed="true">
<inset xmlns:android="http://schemas.android.com/apk/res/android"
android:insetLeft="@dimen/button_inset_horizontal_material"
android:insetTop="@dimen/button_inset_vertical_material"
android:insetRight="@dimen/button_inset_horizontal_material"
android:insetBottom="@dimen/button_inset_vertical_material">
<shape android:shape="rectangle">
<corners android:radius="@dimen/control_corner_material" />
<solid android:color="@color/PRESSED_STATE_COLOR" />
<padding android:left="@dimen/button_padding_horizontal_material"
android:top="@dimen/button_padding_vertical_material"
android:right="@dimen/button_padding_horizontal_material"
android:bottom="@dimen/button_padding_vertical_material" />
</shape>
</inset>
</item>
<!-- focused state -->
<item android:state_focused="true">
<inset xmlns:android="http://schemas.android.com/apk/res/android"
android:insetLeft="@dimen/button_inset_horizontal_material"
android:insetTop="@dimen/button_inset_vertical_material"
android:insetRight="@dimen/button_inset_horizontal_material"
android:insetBottom="@dimen/button_inset_vertical_material">
<shape android:shape="rectangle">
<corners android:radius="@dimen/control_corner_material" />
<solid android:color="@color/FOCUSED_STATE_COLOR" />
<padding android:left="@dimen/button_padding_horizontal_material"
android:top="@dimen/button_padding_vertical_material"
android:right="@dimen/button_padding_horizontal_material"
android:bottom="@dimen/button_padding_vertical_material" />
</shape>
</inset>
</item>
<!-- normal state -->
<item>
<inset xmlns:android="http://schemas.android.com/apk/res/android"
android:insetLeft="@dimen/button_inset_horizontal_material"
android:insetTop="@dimen/button_inset_vertical_material"
android:insetRight="@dimen/button_inset_horizontal_material"
android:insetBottom="@dimen/button_inset_vertical_material">
<shape android:shape="rectangle">
<corners android:radius="@dimen/control_corner_material" />
<solid android:color="@color/NORMAL_STATE_COLOR" />
<padding android:left="@dimen/button_padding_horizontal_material"
android:top="@dimen/button_padding_vertical_material"
android:right="@dimen/button_padding_horizontal_material"
android:bottom="@dimen/button_padding_vertical_material" />
</shape>
</inset>
</item>
</selector>
Sonuç
Düğmenizin Lollipop cihazlarında dalgalanma etkisi olacaktır. Eski versiyonlar dalgalanma efekti dışında tamamen aynı düğmeye sahip olacak. Ancak farklı durumlar için çekilebilir malzemeler sağladığınızdan, dokunma olaylarına da (eski yol olarak) yanıt verirler.