मैं एंड्रॉइड के साथ प्रयोग कर रहा हूं और मैं ड्रॉएबल में ग्रेडिएंट_फाइल के साथ एक बटन की पृष्ठभूमि सेट करने की कोशिश कर रहा हूं।
ग्रेडिएंट_फाइल:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <corners android:radius="20dp" />

    <gradient
        android:startColor="@color/white"
        android:endColor="@color/black"
        android:angle="45"
        android:type="linear" />
</shape>

बटन:

<Button
        android:id="@+id/button2"
        android:layout_width="0dp"
        android:layout_height="100dp"
        android:background="@drawable/gradient_file"
        android:text="Button"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="0.243" />

अब बटन का रंग तब तक नहीं बदलता है जब तक कि मैं मैन्युअल रूप से थीम में नहीं जाता। मूल्यों में एक्सएमएल और प्राथमिक-रंग को शून्य पर सेट करता हूं।

थीम.एक्सएमएल

<resources xmlns:tools="http://schemas.android.com/tools">
    <!-- Base application theme. -->
    <style name="Theme.MyNewUIDesign" parent="Theme.MaterialComponents.DayNight.DarkActionBar">
        <!-- Primary brand color. -->
        <item name="colorPrimary">@null</item> <!-- This was set to @color/purple_500 but if i dont make it null my gradient_file is not applied -->
        <item name="colorPrimaryVariant">@color/purple_700</item>
        <item name="colorOnPrimary">@color/white</item>
        <!-- Secondary brand color. -->
        <item name="colorSecondary">@color/teal_200</item>
        <item name="colorSecondaryVariant">@color/teal_700</item>
        <item name="colorOnSecondary">@color/black</item>
        <!-- Status bar color. -->
        <item name="android:statusBarColor" tools:targetApi="l">?attr/colorPrimaryVariant</item>
        <!-- Customize your theme here. -->
    </style>
</resources>

अब एकमात्र समस्या यह है कि सभी बटन डिफ़ॉल्ट रूप से उस रंग का उपयोग कर रहे हैं और यदि मैं इसे शून्य पर सेट करता हूं तो अन्य बटन अपना रंग खो देते हैं। और अगर मैं इसे शून्य करने के लिए सेट नहीं करता हूं तो मेरा ग्रेडिएंट_फाइल लागू नहीं होता है। मैं बस इसका समाधान चाहता हूं।

0
M.Ahmed 12 जिंदा 2021, 19:09

1 उत्तर

सबसे बढ़िया उत्तर

colorPrimary की छाया लेने से बचने के लिए आपको बस बटन में app:backgroundTint="@null" जोड़ना होगा

<Button
    android:id="@+id/button2"
    android:layout_width="0dp"
    android:layout_height="100dp"
    android:background="@drawable/gradient_file"
    android:text="Button"
    app:backgroundTint="@null"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent"
    app:layout_constraintVertical_bias="0.243" />

enter image description here

1
Zain 12 जिंदा 2021, 19:31
धन्यवाद यह काम किया। क्या आप मुझे बता सकते हैं कि बैकग्राउंड टिंट क्या है और इसका उपयोग ऐप से क्यों करें: बैकग्राउंड टिंट और एंड्रॉइड से नहीं: बैकग्राउंड टिंट?
 – 
M.Ahmed
12 जिंदा 2021, 19:42
मदद करने में खुशी हुई .. android नाम स्थान Android मानक पुस्तकालयों से विशेषताएँ लेता है, लेकिन app नाम स्थान का उपयोग Android पुस्तकालयों के विस्तार के रूप में किया जाता है और support libraries कहा जाता है जो संगत भी हो सकता है पुराने उपकरणों के साथ जिनमें ये पुस्तकालय नहीं हैं .. कृपया यहां देखें।
 – 
Zain
12 जिंदा 2021, 19:45