मैं यह जैसा एक साधारण गोल बटन बनाने की कोशिश कर रहा हूं इस से शुरू

समस्या यह है कि मैं शैली को खोना नहीं चाहता (जब आप इसे और छाया को दबाते हैं तो तरंग और रंग बदल जाता है)। यह पृष्ठभूमि के रूप में एक राज्य-खींचने योग्य का उपयोग करके होगा।

मैं इसे कैसे हासिल कर सकता हूं?

0
Francesco Re 19 मई 2018, 18:35

1 उत्तर

सबसे बढ़िया उत्तर
<android.support.v7.widget.AppCompatButton
            style="@style/buttonApp"
            android:text="Normal" />

इसे res>values>styles.xml में डालें। और जरूरत पड़ने पर पैडिंग, रंग बदलें।

<style name="buttonApp" parent="@style/Widget.AppCompat.Button.Borderless">
    <item name="android:layout_height">@dimen/appButtonHeight</item>
    <item name="android:layout_width">wrap_content</item>
    <item name="android:gravity">center</item>
    <item name="android:paddingLeft">20dp</item>
    <item name="android:paddingRight">20dp</item>
    <item name="android:paddingTop">10dp</item>
    <item name="android:paddingBottom">10dp</item>
    <item name="android:textColor">@color/colorWhite</item>
    <item name="android:textStyle">bold</item>
    <item name="android:textSize">16sp</item>
    <item name="android:background">@drawable/bg_button_orange</item>
</style>

आपको 21 के बाद के संस्करण के लिए आवश्यक प्रेस प्रभाव मिलेगा, जैसा कि नीचे दिया गया है, लेकिन 21 से पहले का संस्करण लहर प्रभाव का समर्थन नहीं करता है, इसलिए आपको प्रेस और गैर प्रेस प्रभाव के लिए कुछ ड्रॉएबल पृष्ठभूमि बनाना होगा, मैंने यहां अंतिम समाधान शामिल किया है

bg_button_orange.xml में res>drawables-v21>

(यह 21 संस्करण Android के बाद है)

<?xml version="1.0" encoding="utf-8"?>
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
    android:color="?android:attr/colorControlHighlight">
    <item android:id="@android:id/mask">
        <shape android:shape="rectangle">
            <solid android:color="@color/colorGreenAlpha" />
            <corners android:radius="15dp" />
        </shape>
    </item>
    <item android:drawable="@drawable/bg_button_not_selected" />
</ripple>

bg_button_orange.xml में res>drawables>

(यह 21 से पहले के Android संस्करण के लिए है)

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/bg_button_selected" android:state_pressed="true" />
    <item android:drawable="@drawable/bg_button_selected" android:state_focused="true" />
    <item android:drawable="@drawable/bg_button_selected" android:state_selected="true" />
    <item android:drawable="@drawable/bg_button_not_selected" />
</selector>

bg_button_not_selected.xml में res>drawables

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <solid android:color="@color/colorGreenLight" />
    <corners android:radius="@dimen/appButtonRadius" />
</shape>

bg_button_not_selected.xml में res>drawables

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <solid android:color="@color/colorGreen" />
    <corners android:radius="@dimen/appButtonRadius" />
</shape>

res>values>dimens.xml में डालें

<dimen name="appButtonHeight">60dp</dimen>
<dimen name="appButtonRadius">30dp</dimen>

res>values>colors.xml में डालें

<color name="colorGreen">#009688</color>
<color name="colorGreenAlpha">#b0009688</color>
<color name="colorGreenLight">#27d4c4</color>

बटन की ऊंचाई सटीक गोल कोनों को प्राप्त करने के लिए बटन त्रिज्या से दोगुनी होनी चाहिए।

आपको 21 संस्करण के बाद और 21 संस्करण से पहले प्रेस प्रभाव पर लहर प्रभाव के साथ बेलो छवि जैसा बटन मिलेगा।

result

0
Khemraj 19 मई 2018, 20:25