অ্যান্ড্রয়েডে ম্যাটেরিয়াল ডিজাইন এবং অ্যাপকম্প্যাট সহ রঙিন বোতামগুলি


256

AppCompatআজ আপডেটটি আসার আগে আমি অ্যান্ড্রয়েড এল এর বোতামগুলির রঙ পরিবর্তন করতে সক্ষম হয়েছিল তবে পুরানো সংস্করণগুলিতে নয়। নতুন অ্যাপকম্প্যাট আপডেট অন্তর্ভুক্ত করার পরে আমি কোনও সংস্করণের জন্য রঙ পরিবর্তন করতে অক্ষম, যখন আমি চেষ্টা করি তখন বোতামটি কেবল অদৃশ্য হয়ে যায়। কেউ কি জানেন কীভাবে বোতামের রঙ পরিবর্তন করতে হয়?

নিম্নলিখিত ছবিগুলি আমি কী অর্জন করতে চাই তা দেখায়:

পছন্দসই ফলাফল দেখাচ্ছে ছবি

সাদা বোতামটি ডিফল্ট, আমি যা চাই তা লাল রঙের।

এর মধ্যে বোতামগুলির রঙ পরিবর্তন করতে আমি আগে যা করছিলাম তা হ'ল styles.xml:

<item name="android:colorButtonNormal">insert color here</item>

এবং এটি গতিশীলভাবে করতে:

button.getBackground().setColorFilter(getResources().getColor(insert color here), PorterDuff.Mode.MULTIPLY);

এছাড়াও আমি থেকে থিম পিতা বা মাতা পরিবর্তন করেনি @android:style/Theme.Material.Light.DarkActionBarথেকেTheme.AppCompat.Light.DarkActionBar


আমি একই চেষ্টা করেছিলাম কিন্তু কিছুই কিছুই বাটনটির রঙ পরিবর্তন করতে পারেনি। আমি অ্যান্ড্রয়েডটিকেও সরিয়েছি: গুণটি থেকে বেকউসটি এটি সমর্থন লাইব থেকে এবং অ্যান্ড্রয়েড নেমস্পেসের অংশ নয়
ইনফরম্যাটিক0

আপনি যদি অ্যান্ড্রয়েড ব্যবহার করছেন: অ্যান্ড্রয়েড 5.0 এর সাথে রঙিন বাটননরমাল এটি কাজ করে - তবে এটি পিছনের দিকে সামঞ্জস্যপূর্ণ বলে মনে হচ্ছে না
Informatic0re

হ্যাঁ, আমি ঠিক যা
अनुभव করছিলাম

আমি আরও জানতে পেরেছিলাম যে অ্যাকসেন্টের রঙ চেকবক্সের রঙ পরিবর্তন করে না, তবে এটি পুরানো সংস্করণগুলিতে করে
ইনফরম্যাটিক0

গতিশীল পদ্ধতির জন্য প্লাস ওয়ান। :)
theapache64

উত্তর:


222

সাপোর্ট লাইব্রেরি সরকারীভাবে সরকারীভাবে স্থির করা হয়েছে 22। প্রাসঙ্গিক গুগল কোড সমস্যাটি দেখুন:

https://issuetracker.google.com/issues/37008632

ব্যবহারের উদাহরণ

theme.xml:

<item name="colorButtonNormal">@color/button_color</item>

v21 / theme.xml

<item name="android:colorButtonNormal">@color/button_color</item>

17
কীভাবে এটি ব্যবহার করবেন তার কোনও উদাহরণ আছে? আমি কীভাবে কেবল একটি বোতামে রঙ সেট করতে পারি?
সূচনা

3
@ উইন্ড্রাইডার যদিও আমার একটি সমস্যা আছে, আমি বিভিন্ন রঙের বোতাম তৈরি করতে এটি ব্যবহার করতে চাই। আমি স্টাইলগুলি বাটন.রেড, বাটন.গ্রিন তৈরি করি যা পিতামাতার সমেত সবগুলি বাটন বেস শৈলীর সমান। আমি আইটেমের রঙ সেট করলাম বাটন সাধারণভাবে অনুরোধ করা রঙের জন্য, এটিকে বোতাম থিম হিসাবে সেট করুন। দুর্ভাগ্যক্রমে এটি কেবল 21 এর জন্য বোতাম রঙ করে it
dominik4142

71
অ্যাপকম্প্যাট ২২.১.১ এর সাথে এটি আমার জন্য কেবল ২.৩..4, ৪.৪.৪ এবং ৫.১ এ কাজ করে শুধুমাত্র একটি বোতামের জন্য: সেটিং বোতামটি android:theme="@style/ColoredButton"এবং স্টাইলস.এক্সএমএল <style name="ColoredButton" parent="Widget.AppCompat.Button"> <item name="colorButtonNormal">@color/button_yellow</item> </style>
হুনিয়াডিম ২r

2
@ হুনিয়াডিম, বোতামে একটি থিম যুক্ত করে কোনও কারণে অন ক্লিক ক্লিক করুন। ডিজাইনের লাইব্রেরি আরও ভালতর উপায় না প্রদান করা পর্যন্ত আমি এটিকে একটি কাজের হিসাবে শ্রেণিবদ্ধ করব।
19:48

3
@ খুশি: আপনার ক্ষেত্রে সমস্যাটি মনে হচ্ছে সমস্যাটি এই বাগ: কোড. google.com/p/android/issues/detail?id=62795#c1
Hunyadym

148

সম্পাদনা (22.06.2016):

আমি মূল প্রতিক্রিয়া পোস্ট করার পরে অ্যাপকম্প্যাট লাইব্রেরি উপাদান বোতামগুলিকে সমর্থন করা শুরু করে। এই পোস্টে আপনি উত্থাপিত এবং সমতল বোতামগুলির সহজ বাস্তবায়ন দেখতে পাবেন।

আসল উত্তর:

যেহেতু অ্যাপকম্প্যাটটি বোতামটি সমর্থন করে না তবে আপনি ব্যাকগ্রাউন্ড হিসাবে এক্সএমএল ব্যবহার করতে পারেন। এটি করার জন্য আমি অ্যান্ড্রয়েডের উত্স কোডটি দেখেছি এবং স্টাইলিং উপাদান বোতামের জন্য সম্পর্কিত ফাইলগুলি পেয়েছি।

1 - উত্স থেকে উপাদান বোতামের আসল বাস্তবায়নটি দেখুন।

অ্যান্ড্রয়েড উত্স কোডে btn_default_matory.xML দেখুন ।

আপনি ফাইলগুলি আপনার প্রকল্পের অঙ্কনযোগ্য-v21 ফোল্ডারে অনুলিপি করতে পারেন। তবে রঙিন অ্যাটরটি এখানে স্পর্শ করবেন না। আপনার যে ফাইলটি পরিবর্তন করতে হবে তা হ'ল দ্বিতীয় ফাইল।

অঙ্কনযোগ্য-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 - মূল উপাদান বোতামের আকৃতি পান

আপনি বুঝতে পারেন যে এই আঁকাগুলির অভ্যন্তরে এমন একটি আকার রয়েছে যা আপনি উত্স কোডের এই ফাইলটিতে খুঁজে পেতে পারেন ।

<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 - উপাদান বোতামের মাত্রা অর্জন করা

এবং এই ফাইলটিতে আপনি ফাইলটি থেকে কিছু মাত্রা ব্যবহার করেছেন যা আপনি এখানে খুঁজে পেতে পারেন । আপনি পুরো ফাইলটি অনুলিপি করতে পারেন এবং আপনার মান ফোল্ডারে রেখে দিতে পারেন। সমস্ত বোতামে একই আকারের (যা উপাদান বোতামে ব্যবহৃত হয়) প্রয়োগ করার জন্য এটি গুরুত্বপূর্ণ

4 - পুরানো সংস্করণগুলির জন্য অন্য একটি আঁকুনযোগ্য ফাইল তৈরি করুন

পুরানো সংস্করণগুলির জন্য আপনার একই নামের সাথে অন্য আঁকতে হবে। আমি রেফারেন্সিংয়ের পরিবর্তে আইটেমগুলিকে সরাসরি ইনলাইন দিচ্ছি। আপনি সেগুলি উল্লেখ করতে চাইতে পারেন। তবে আবার, সবচেয়ে গুরুত্বপূর্ণ বিষয়টি হ'ল ম্যাটেরিয়াল বোতামের আসল মাত্রা।

অঙ্কনযোগ্য / 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>

ফলাফল

ললিপপ ডিভাইসে আপনার বোতামটি রিপল প্রভাব ফেলবে। পুরানো সংস্করণগুলি রিপল ইফেক্ট বাদে ঠিক একই বোতামে থাকবে। তবে যেহেতু আপনি বিভিন্ন রাজ্যের জন্য অঙ্কনযোগ্য সরবরাহ করেছেন তাই তারা স্পর্শ ইভেন্টগুলিতে (পুরানো উপায় হিসাবে) সাড়াও দেবে।


4
হ্যাঁ অবশ্যই. আপনি যদি সমস্ত বোতামের জন্য একই পটভূমি ব্যবহার করেন এবং আপনি যদি বার বার এটি যোগ করতে না চান তবে আপনার স্টাইলগুলিতে একটি বোতাম শৈলীর সংজ্ঞা দিন x xml <শৈলীর নাম = " বাটন স্টাইল " প্যারেন্ট = "অ্যান্ড্রয়েড: উইজেট.বটন"> < আইটেমের নাম = "অ্যান্ড্রয়েড: ব্যাকগ্রাউন্ড"> @ অঙ্কনযোগ্য / কাস্টম_বিটিএন </item> </style> এবং আপনার থিম <আইটেমের নাম = "অ্যান্ড্রয়েড: বোতামস্টাইল"> @ শৈলী / বাটন স্টাইল </item>
এলুলেসি

1
আমি কীভাবে প্রাক -21-এ এই বোতামটি উন্নত করতে পারি? আমি যেমন বুঝতে পারি নীচে বোতামের নীচে ছায়া দিয়ে আমার নতুন আকার যুক্ত করা উচিত তবে ঠিক আমার এটি কোথায় রাখা উচিত?
xakz

7
অত্যন্ত বিরক্তিকর যে এটি বক্সের বাইরে সমর্থিত নয়
স্যাম

39
আমি আপনার সাথে সম্পূর্ণ একমত। বাটন বেশিরভাগ ব্যবহৃত উইজেট তবে এটি উপাদানগুলির জন্য সমর্থন লাইব্রেরিতে অন্তর্ভুক্ত নয়। আমি ভাবছি তারা কী ভাবছিল।
এলুলেসি

1
এছাড়াও, আপনার গাইড অনুসরণ করে মনে হচ্ছে পটভূমিটি একেবারেই দেখা যাচ্ছে না ...
জেএমআরবুস্তি

111

এটি আরও বেশি থিম যুক্ত করে অ্যাপকম্প্যাট লাইব্রেরির v23.0.0 এ বর্ধিত করা হয়েছে

Widget.AppCompat.Button.Colored

সবার আগে অ্যাপকম্প্যাট নির্ভরতা অন্তর্ভুক্ত করুন যদি আপনি ইতিমধ্যে না করে থাকেন

compile('com.android.support:appcompat-v7:23.0.0') {
    exclude group: 'com.google.android', module: 'support-v4'
}

এখন যেহেতু আপনাকে অ্যাপ কম্প্যাটের v23 ব্যবহার করতে হবে, আপনারও পাশাপাশি SDK-v23 টার্গেট করতে হবে!

    compileSdkVersion = 23
    targetSdkVersion = 23

আপনার values/theme

<item name="android:buttonStyle">@style/BrandButtonStyle</item>

আপনার values/style

<style name="BrandButtonStyle" parent="Widget.AppCompat.Button.Colored">
    <item name="colorButtonNormal">@color/yourButtonColor</item>
    <item name="android:textColor">@color/White</item>
</style>

আপনার values-v21/style

<style name="BrandButtonStyle" parent="Widget.AppCompat.Button.Colored">
    <item name="android:colorButtonNormal">@color/yourButtonColor</item>
    <item name="android:textColor">@color/White</item>
</style>

যেহেতু আপনার বোতামের থিমটি ভিত্তিক Widget.AppCompat.Button.Colored, বোতামটির পাঠ্য রঙটি ডিফল্ট সাদা!

তবে আপনি যখন বোতামটি অক্ষম করবেন তখন কোনও সমস্যা আছে বলে মনে হচ্ছে, বোতামটি এর রঙ হালকা ধূসর করে দেবে, তবে পাঠ্যের রঙ সাদা থাকবে!

এর জন্য একটি কর্মসূচী হ'ল বিশেষত বাটনে টেক্সটের রঙটি সাদা করে দেওয়া! আমি উপরের দেখানো স্টাইলে যেমন করেছি

এখন আপনি কেবল নিজের বোতামটি সংজ্ঞায়িত করতে পারবেন এবং অ্যাপকম্প্যাটটিকে বাকি কাজটি করতে দিন :)

<Button
        android:layout_width="200dp"
        android:layout_height="48dp" />

অক্ষম রাজ্য অক্ষম রাষ্ট্র

সক্ষম রাষ্ট্র সক্ষম রাষ্ট্র

সম্পাদনা:

যোগ করতে <Button android:theme="@style/BrandButtonStyle"/>


19
এখনই এটি করার সেরা উপায়! আপনি স্বতন্ত্র বোতামগুলির সাথে স্টাইলটিও ব্যবহার করতে পারেন <Button android:theme="@style/BrandButtonStyle"/>। এটা তোলে হতে হয়েছে themeঅ্যাট্রিবিউটে নাstyle অ্যাট্রিবিউট।
মোহেলেন্দো

7
@ মুহাম্মাদ আলফায়েফি এর জন্য আপনার কি নমুনা প্রকল্প আছে বা টুকরো টুকরো? আমি পরিষ্কার প্রকল্প তৈরি করেছি এবং এটি কার্যকর হয় না: github.com/Bresiu/ThemeTest । অ্যাকসেন্ট রঙের সাথে এবং এপিআই
ভি

4
এন্ড্রয়েড: থিমটি বৈশিষ্ট্যটি নির্দিষ্ট করার সময় এটি কেবল আমাকে কাজ করেছিল। বোতাম ট্যাগটি দিয়ে আমার পক্ষে কাজ করার জন্য অ্যাট্রিবিউট স্টাইলটি আমি পাইনি।
রে হান্টার

8
V23.1 লাইব ব্যবহার করে, এটি সঠিকভাবে কাজ করে নি, এটি সর্বদা থিমটিতে সেট করার চেষ্টা করার সময় বিগ হিসাবে অ্যাকসেন্ট রঙ দেখায়, বর্ণিত হিসাবে বর্ণিত হয় না
প্যাট্রিক ফ্যাভ্রে

3
এখানে একই সমস্যা, v23.1 এ অক্ষম বোতামটি সক্ষম বোতামের মতো একই রঙ as খুবই হতাশাজনক. কেউ বুঝতে পারছেন?
আহমেদ ডাব্লু 13'16

63

অ্যানড্রয়েড সাপোর্ট লাইব্রেরি 22.1.0 এ, গুগল Buttonরঙিন সচেতন করেছে। সুতরাং, বোতামের ব্যাকগ্রাউন্ডের রঙটি কাস্টমাইজ করার আরেকটি উপায় হ'ল backgroundTintবৈশিষ্ট্যটি ব্যবহার করা।

উদাহরণ স্বরূপ,

<Button
       android:id="@+id/add_remove_button"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:backgroundTint="@color/bg_remove_btn_default"
       android:textColor="@android:color/white"
       tools:text="Remove" />

1
অবশেষে! 22.1 রিলিজ সম্পর্কে ব্লগ পোস্ট: অ্যান্ড্রয়েড- উন্নয়নকারী.ব্লগস্পট.নো
গিলারমো

5
ডকুমেন্টেশন বলছে: "আপনি যখন নিজের বিন্যাসে বাটন ব্যবহার করবেন এটি স্বয়ংক্রিয়ভাবে ব্যবহৃত হবে custom কাস্টম ভিউগুলি লেখার সময় আপনার কেবল এই ক্লাসটি ম্যানুয়ালি ব্যবহার করা উচিত" বিকাশকারী.অ্যান্ড্রয়েড. com/references/android/support/v7/widget/… এর অর্থ কি আমাদের নিজের লেআউট এবং জাভা কোড ম্যানুয়ালি পরিবর্তন করতে হবে না?
স্টিফেন

@ স্টেফেন না, আমাদের লেআউট পরিবর্তন করা উচিত। chris.banes.me/2015/04/22/support-libraries-v22-1-0
আন্তন হলোভিন

অসাধারণ! এখন, এমন একটি অ্যাপকম্প্যাটটগলবাটন আছে যা আপনাকে টগলব্যাটনের পটভূমি পরিবর্তন করতে দেয়? হতে পারে আমি কোডটি চুরি করতে পারি ...
এপ্রু

19
দুর্ভাগ্যক্রমে এটি 21 এপ্রিল 21+ এ কাজ করে। অ্যান্ড্রয়েড: ব্যাকগ্রাউন্ডসিন্ট অ্যাট্রিবিউট এমনকি অ্যাপকম্প্যাট লাইব্রেরির সাথে প্রি-ললিপপে কাজ করে না। থিম থেকে বর্ণের বাটননরমাল প্রাক-ললিপপে কাজ করে।
তৈমুর_সি

42

রঙিন বোতামগুলি সমর্থন করতে সর্বশেষতম অ্যাপকম্প্যাট লাইব্রেরি (> ২৩.২.১ ) ব্যবহার করুন :

স্ফীত - এক্সএমএল

অ্যাপকম্প্যাট উইজেট:

android.support.v7.widget.AppCompatButton

অ্যাপকম্প্যাট স্টাইল:

style="@style/Widget.AppCompat.Button.Colored"

বিশেষ দ্রষ্টব্য! এক্সএমএলে একটি পছন্দসই রঙ সেট করতে: appপরিবর্তে অ্যাটর ব্যবহার করুনandroid

(ব্যবহারের alt+enterবা ঘোষণা xmlns:app="http://schemas.android.com/apk/res-auto"ব্যবহারের app)

অ্যাপ্লিকেশন : ব্যাকগ্রাউন্ডটাইন্ট = "@ রঙ / আপনার_কাস্টম_ রঙ"

উদাহরণ:

<android.support.v7.widget.AppCompatButton
     style="@style/Widget.AppCompat.Button.Colored"
     app:backgroundTint="@color/your_custom_color"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"     
     android:text="Colored Button"/>

বা প্রোগ্রামগতভাবে সেট - JAVA

 ViewCompat.setBackgroundTintList(your_colored_button,
 ContextCompat.getColorStateList(getContext(),R.color.your_custom_color));

আপনার জাভা কোডটি আমার পক্ষে কাজ করেছিল। এবং মুহাম্মদ আলফাফি উত্তর বোতামের পাঠ্যের রঙ সেট করতে সহায়তা করেছে।
মাইক্রো

প্রোগ্রামেটিকভাবে রঙিন সেট করার কোনও সহজ উপায় আছে (ব্যাকগ্রাউন্ড নয়)?
ভল্ট

চমৎকার! 4.4.4 তেও কাজ করে! এবং নির্বাচক রাজ্যও বেশ ভাল রক্ষণাবেক্ষণ করা হয়!
Sud007

দস্তাবেজগুলি : আপনার বিন্যাসে বোতামগুলি সেট করার সময় এটি স্বয়ংক্রিয়ভাবে ব্যবহৃত হয়। কাস্টম ভিউগুলি তৈরি করার সময় আপনাকে কেবল অ্যাপকম্প্যাটবটনটি নির্দিষ্ট করতে হবে।
gMale

মজার বিষয় হল এক্সএমএল পরিবর্তনগুলি খণ্ডে পুরোপুরি কাজ করেছে তবে কোনও কার্যকলাপ বিন্যাসে নয়। ক্রিয়াকলাপ বোতামগুলি কেবল রঙআসেন্ট ব্যবহার করে। প্রোগ্রামেটিক সংস্করণ যদিও কাজ করেছে।
লিওন

25

সর্বশেষ সমর্থন লাইব্রেরির সাহায্যে আপনি কেবলমাত্র ক্রিয়াকলাপের উত্তরাধিকারী হয়ে উঠতে AppCompatActivityপারেন, সুতরাং এটি আপনার Buttonমতো করে ফুলে উঠবে AppCompatButtonএবং লেআউটের প্রতিটি এক বোতামের রঙের স্টাইল করার সুযোগ দেবে android:theme="@style/SomeButtonStyle", যেখানে SomeButtonStyleরয়েছে:

<style name="SomeButtonStyle" parent="@android:style/Widget.Button">
    <item name="colorButtonNormal">@color/example_color</item>
</style>

2.3.7, 4.4.1, 5.0.2 এ আমার জন্য কাজ করেছেন


ধন্যবাদ !!! আমি সম্পাদনা পাঠ্য শৈলী আপডেট করার জন্য আমি কেবল "উইজেট.অ্যাপক্যাম্প্যাট.এডিটটেক্সট" এর জন্য প্যারেন্ট মানটি পরিবর্তন করেছি।
জুয়ান সরভিয়া

3
আপনাকে ধন্যবাদ, আমার জন্যও কাজ করেছেন। ব্যবহার android:themeএবং না নিশ্চিত করুন style। আপনি যোগ করতে পারেন colorControlHighlightএবং colorControlActivated
রাহেল

কাজ করে না, এপিআই 22, অ্যাপকম্প্যাটঅ্যাক্টিভিটি, থিম মেটেরিয়াল
লাইট

1
এর Theme.AppCompat.Lightপরিবর্তে অ্যান্ড্রেইগলেভ ব্যবহার করার চেষ্টা করুন ।
আর্টেম

হাই, এটি পছন্দসই রঙ পরিবর্তন করে তবে ছায়া সরিয়ে দেয়।
Amio.io

16

আপনি যদি শৈলী নীচে চান

এখানে চিত্র বর্ণনা লিখুন

এই স্টাইলটি আপনার বোতামটি যুক্ত করুন

style="@style/Widget.AppCompat.Button.Borderless.Colored"

আপনি যদি এই স্টাইল চান

এখানে চিত্র বর্ণনা লিখুন

কোড নীচে যুক্ত করুন

style="@style/Widget.AppCompat.Button.Colored"

1
compile 'com.android.support:appcompat-v7:23.1.0'আপনাকে অবশ্যই যুক্ত করতে হবে।
প্রতীক বুটানি

1
তবে প্রশ্নটি হল কীভাবে বিভিন্ন রঙের সহ উপাদানগুলির বোতামগুলি রয়েছে, যাতে থিমের প্রাথমিক রঙটি না থাকে।
অ্যাপোস্ট্রোফিক্স

15

উত্তরটি থিমটিতে রয়েছে শৈলীতে নয়

সমস্যাটি হ'ল বাটনটির রঙ থিমটির রঙবটনের সাধারণ সাথে লেগে থাকে। আমি ভাগ্যবিহীন বিভিন্নভাবে স্টাইল পরিবর্তন করার চেষ্টা করেছি। তাই আমি বোতামের থিমটি পরিবর্তন করেছি

রঙবটন সাধারণ এবং রঙপ্রাইমারি সহ একটি থিম তৈরি করুন:

<style name="ThemeAwesomeButtonColor" parent="AppTheme">
    <item name="colorPrimary">@color/awesomePrimaryColor</item>
    <item name="colorButtonNormal">@color/awesomeButtonColor</item>
</style>

বোতামে এই থিমটি ব্যবহার করুন

<Button
        android:id="@+id/btn_awesome"
        style="@style/AppTheme.Button"
        android:theme="@style/ThemeAwesomeButtonColor"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="@string/btn_awesome"/>

"অ্যাপ থিম.বাটন" যে কোনও জিনিসই বাটন শৈলীতে প্রসারিত হতে পারে যেমন আমি পাঠ্য রঙের জন্য প্রাথমিক রঙ ব্যবহার করি:

<style name="AppTheme.Button" parent="Base.Widget.AppCompat.Button">
    ...
    <item name="android:textColor">?attr/colorPrimary</item>
    ...
</style>

এবং আপনি যে কোনও রঙের বোতামটি পেতে পারেন যা আপনি উপাদান নকশার সাথে সামঞ্জস্য করতে চান।


শৈলীতে আমি যুক্ত করতে পারে এমন অন্যান্য বৈশিষ্ট্যগুলি কী।
সাগর নায়ক 22'16

4

আমি সবেমাত্র একটি অ্যান্ড্রয়েড লাইব্রেরি তৈরি করেছি, এটি আপনাকে সহজেই বোতামের রঙ এবং রিপল রঙটি পরিবর্তন করতে দেয়

https://github.com/xgc1986/RippleButton

<com.xgc1986.ripplebutton.widget.RippleButton
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/btn"
    android:text="Android button modified in layout"
    android:textColor="@android:color/white"
    app:buttonColor="@android:color/black"
    app:rippleColor="@android:color/white"/>

আপনি এলোমেলোভাবে রঙগুলি কাস্টমাইজ করার অনুমতি দিয়ে আপনার প্রতিটি বোতামের জন্য আলাদা রঙের বুদ্ধির জন্য একটি স্টাইল তৈরি করার দরকার নেই


4

Android + 4.0 এ অ্যাপকম্প্যাট-ভি 7: 22.2.0 নিয়ে আমার জন্য এই কাজ

আপনার স্টাইল.এক্সএমএল এ

<style name="Button.Tinted" parent="Widget.AppCompat.Button">
    <item name="colorButtonNormal">YOUR_TINT_COLOR</item>
    <item name="colorControlHighlight">@color/colorAccent</item>
    <item name="android:textColor">@android:color/white</item>
</style>

আপনার লেআউট ফাইল

<Button
    android:id="@+id/but_next"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="@string/but_continue"
    android:theme="@style/Button.Tinted" />

হাই, এটি পছন্দসই রঙ পরিবর্তন করে তবে ছায়া সরিয়ে দেয়।
Amio.io

হাই আবার, আমি দেখতে পারেন। এটা এখন সঠিক আচরণ।
Amio.io

আপনি জাভাতে এটি কীভাবে করতে পারেন?
মাইক্রো

@ মাইক্রোআর উপরের উত্তরটি পরীক্ষা করুন।
ingyesid

4

লেআউট:

<android.support.v7.widget.AppCompatButton
  style="@style/MyButton"
  ...
  />

styles.xml:

<style name="MyButton" parent="Widget.AppCompat.Button.Colored">
  <item name="backgroundTint">@color/button_background_selector</item>
  <item name="android:textColor">@color/button_text_selector</item>
</style>

রং / button_background_selector.xml:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_enabled="false" android:color="#555555"/>
    <item android:color="#00ff00"/>
</selector>

রং / button_text_selector.xml:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_enabled="false" android:color="#888888"/>
    <item android:color="#ffffff"/>
</selector>

3

যারা ব্যবহার করছেন তাদের জন্য ImageButton এখানে এটি আপনি কীভাবে এটি করছেন:

স্টাইল.এক্সএমএল:

<style name="BlueImageButton" parent="Base.Widget.AppCompat.ImageButton">
    <item name="colorButtonNormal">@color/primary</item>
    <item name="android:tint">@color/white</item>
</style>

ভি 21 / স্টাইল.এক্সএমএল:

<style name="BlueImageButton" parent="Widget.AppCompat.ImageButton">
    <item name="android:colorButtonNormal">@color/primary</item>
    <item name="android:tint">@color/white</item>
</style>

তারপরে আপনার লেআউট ফাইলটিতে:

<android.support.v7.widget.AppCompatImageButton
    android:id="@+id/my_button"
    android:theme="@style/BlueImageButton"
    android:layout_width="42dp"
    android:layout_height="42dp"
    android:layout_gravity="center_vertical"
    android:src="@drawable/ic_check_black_24dp"
    />

এটি সাহায্য করেছে .... আমার ধারণা বাটন উইজেটে স্টাইলের পরিবর্তে বাটন শৈলীটি থিম হিসাবে প্রয়োগ করা জরুরী। আমি এটি স্টাইল = "@ স্টাইল / ব্লুআইমেজবটন" এর আওতায় প্রয়োগ করছিলাম এবং এটি কার্যকর হয়নি
ভেলভাল

3

আপনার সাথে শৈলী সমাধান ব্যবহার করেন তাহলে colorButtonNormal ভুলবেন না থেকে উত্তরাধিকারী Widget.AppCompat.Button.Colored যাতে কাজ করছে;)

মত

<style name="CustomButtonStyle" parent="Widget.AppCompat.Button.Colored">
      <item name="colorButtonNormal">@android:color/white</item>
</style>

2

অ্যাপকম্প্যাটবটন ব্যবহার করে আর একটি সহজ সমাধান

<android.support.v7.widget.AppCompatButton
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     style="@style/Widget.AppCompat.Button.Colored"
     app:backgroundTint="@color/red"
     android:text="UNINSTALL" />

2

ব্যবহার করুন:

android:backgroundTint="@color/customColor"

অথবা এমনকি :

android:background="@color/customColor"

এবং এটি বোতামে কাস্টম রঙ দেবে।


1

আপনি যদি কেবল "ফ্ল্যাট" উপাদান বোতামটি চান তবে আপনি এখানে বর্ণিত হিসাবে নির্বাচনযোগ্য আইটেমব্যাকগ্রাউন্ড বৈশিষ্ট্যটি ব্যবহার করে তাদের পটভূমিকে কাস্টমাইজ করতে পারেন ।


আপনি যদি কোনও "রঙিন" রঙ বা নির্বাচিত রঙ পরিবর্তন করতে না চান তবে এটি অবশ্যই রঙিন বোতামগুলির সাথে প্রতিক্রিয়া পাওয়ার সহজ সমাধান। ধন্যবাদ!
theblang


1

আমার জন্য সমস্যাটি ছিল যে অ্যান্ড্রয়েড 5.0 এ android:colorButtonNormalএর কোনও প্রভাব ছিল না এবং প্রকৃতপক্ষে থিমের (যেমন android:colorAccent) কোনও আইটেমই ছিল না, তবে অ্যান্ড্রয়েড ৪.৪.৩ এ উদাহরণস্বরূপ তা করেছে। প্রকল্পটি 22 compileSdkVersionএবং এর সাথে কনফিগার করা targetSdkVersionহয়েছে, সুতরাং আমি মুহাম্মদ আলফায়েফির বর্ধিত হিসাবে সমস্ত পরিবর্তন করেছি, তবে শেষ পর্যন্ত, আমি লক্ষ্য করেছি যে সমস্যাটি বিল্ডটুলস ভার্শন ছিল, এটি আপডেট হয়নি। একবার আমি 23.0.1 এ পরিবর্তিত হয়ে গেলে , সমস্ত কিছু প্রায় স্বাভাবিক হিসাবে কাজ শুরু করে। এখন, এর android:colorButtonNormalএখনও কোনও প্রভাব নেই, তবে কমপক্ষে বোতামটি প্রতিক্রিয়া জানায় android:colorAccentযা আমার পক্ষে গ্রহণযোগ্য।

আমি আশা করি যে এই ইঙ্গিতটি কাউকে সাহায্য করতে পারে। দ্রষ্টব্য: আমি স্টাইলটি সরাসরি বোতামে প্রয়োগ করেছি, যেহেতু বোতামটিরও android:theme=[...]কার্যকর হয়নি।


আপনি প্রায় 100% সঠিক উপায় কিভাবে নতুন @ শৈলী / Widget.AppCompat.Button.Colored ব্যবহার পাওয়া;) - এই উত্তর দেখার stackoverflow.com/a/35811157/19733911
sosite

1

এটিকে টান দেওয়ার একটি উপায় আপনাকে কেবল একটি স্টাইলের দিকে নির্দেশ করতে এবং আপনার অ্যাপ্লিকেশনের সমস্ত বোতামের মতো না থিম দেওয়ার অনুমতি দেয়।
থিমস.এক্সএমএলে একটি থিম যুক্ত করুন

    <style name="Theme.MyApp.Button.Primary.Blue" parent="Widget.AppCompat.Button">
        <item name="colorButtonNormal">@color/someColor</item>
        <item name="android:textColorPrimary">@android:color/white</item>
    </style>

এখন স্টাইলস.এক্সএমএল এড করুন

    <style name="MyApp.Button.Primary.Blue" parent="">
        <item name="android:theme">@style/Theme.MyApp.Button.Primary.Blue</item>
    </style>

এখন আপনার বিন্যাসে কেবল আপনার বোতামের স্টাইলটি নির্দেশ করুন

    <Button
        ...
        style="@style/MyApp.Button.Primary.Blue"
        ...  />

1

হালনাগাদ

ব্যবহারের নকশা সমর্থন লাইব্রেরী (23.2.0) এবং appcompatwidgets নীচের হিসাবে

অ্যান্ড্রয়েড সহায়তা লাইব্রেরিতে 22.1 :

লেআউটগুলি স্ফীতকরণের সময় এটি স্বয়ংক্রিয়ভাবে করা হয় - অ্যাপকম্প্যাটবটনের সাথে বাটনটি প্রতিস্থাপন করা, টেক্সটভিউকে অ্যাপকম্প্যাটটিেক্সটভিউ ইত্যাদির সাথে প্রতিস্থাপন করা যাতে প্রতিটি টিংটিং সমর্থন করতে পারে। এই রিলিজে, সেই রঙিন সচেতন উইজেটগুলি এখন প্রকাশ্যে উপলভ্য, আপনাকে সমর্থিত উইজেটগুলির একটিতে সাবক্লাসের প্রয়োজন হলেও আপনাকে টিন্টিং সমর্থন অবিরত রাখতে দেয়।

টিন্ট সচেতন উইজেটগুলির সম্পূর্ণ তালিকা:

AppCompatAutoCompleteTextView
AppCompatButton
AppCompatCheckBox
AppCompatCheckedTextView
AppCompatEditText
AppCompatMultiAutoCompleteTextView
AppCompatRadioButton
AppCompatRatingBar
AppCompatSpinner
AppCompatTextView

প্রাক-ললিপপ ডিভাইসের জন্য উপাদান নকশা :

অ্যাপকম্প্যাট (ওরফে অ্যাকশনবারকম্প্যাট) জিনজারব্রেডে চলমান ডিভাইসগুলির জন্য অ্যান্ড্রয়েড 4.0.০ অ্যাকশনবার এপিআইয়ের ব্যাকপোর্ট হিসাবে শুরু হয়েছিল, ব্যাকপোর্টেড বাস্তবায়ন এবং ফ্রেমওয়ার্ক বাস্তবায়নের শীর্ষে একটি সাধারণ এপিআই স্তর সরবরাহ করে। অ্যাপকোম্প্যাট ভি 21 একটি এপিআই এবং বৈশিষ্ট্য-সেট সরবরাহ করে যা অ্যান্ড্রয়েড 5.0 এর সাথে আপডেট রয়েছে



1

আপনি যদি উইজেট.অ্যাপকম্প্যাট.বটন , বেস.বিজেট.অ্যাপকম্প্যাট.বটন.ক্লোরড ইত্যাদি অ্যাপ্লিকেশন কম্পাইল স্টাইলটি ব্যবহার করতে চান তবে আপনাকে সমর্থন লাইব্রেরির সামঞ্জস্যপূর্ণ দর্শন সহ এই স্টাইলগুলি ব্যবহার করতে হবে।

নীচের কোডটি প্রাক-ললিপপ ডিভাইসের জন্য কাজ করে না:

<Button
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:theme="@style/Widget.AppCompat.Button" />

সক্ষম হওয়া অ্যাপকোম্প্যাট শৈলীগুলিতে আপনাকে অ্যাপকম্প্যাটবটন ব্যবহার করতে হবে:

<android.support.v7.widget.AppCompatButton
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:theme="@style/Widget.AppCompat.Button" />

2
এক্সএমএল লেআউটগুলি স্ফীত করার সময় কি অ্যাপ কমপ্যাট উইজেটগুলি স্বয়ংক্রিয়ভাবে ব্যবহৃত হয় না? আমি বিশ্বাস করি যে এটির ImageViewসাথে প্রতিস্থাপন AppCompatImageViewহবে এবং এটি সমস্ত উইজেটগুলির সাথে একই হওয়া উচিত, যা সম্পর্কিত AppCompatসংস্করণ রয়েছে।
d.aemon

না, আপনি যদি সর্বশেষ লক্ষ্য সংস্করণটি লক্ষ্য না করেন তবে আপনাকে android.support.v7.widget.AppCompatImageViewস্পষ্টভাবে সংজ্ঞায়িত করতে হবে ।
farukcankaya

last target version@ পাওয়ার বলতে কী বোঝ?
d.aemon

1

আমি এটি ব্যবহার করি ছড়িয়ে পড়া প্রভাব এবং বোতাম ক্লিক ছায়া কাজ।

style.xml

<style name="Button.Red" parent="Widget.AppCompat.Button.Colored">
    <item name="android:textColor">@color/material_white</item>
    <item name="android:backgroundTint">@color/red</item>
</style>

লেআউটে বোতাম:

<Button
        style="@style/Button.Red"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="@string/close"/>

0

আমি আসলে আমার কাস্টম বোতামের শৈলীতে পরিবর্তন চাইনি তবে দুর্ভাগ্যক্রমে তারা আর কাজ করছে না।

আমার অ্যাপ্লিকেশনটিতে 9 এর একটি minSdkVersion রয়েছে এবং সমস্ত কিছু আগে কাজ করেছিল।

আমি জানি না তবে যেহেতু আমি অ্যান্ড্রয়েড সরিয়েছি: বোতামস্টাইলের আগে মনে হয় এটি আবার কাজ করবে

এখন = কাজ করছে:

<item name="buttonStyle">@style/ButtonmyTime</item>

আগে = কেবল ধূসর উপাদান বোতাম:

<item name="android:buttonStyle">@style/ButtonmyTime</item>

আমার নতুন বোতামগুলি অ্যান্ড্রয়েড সংস্করণের জন্য কোনও স্পিজিয়াল ফোল্ডার নেই কারণ আমার বোতামগুলি বেশ সমতল এবং সমস্ত অ্যান্ড্রয়েড সংস্করণগুলিতে তাদের দেখতে একইরকম হওয়া উচিত।

হয়তো কেউ আমাকে বলতে পারেন যে আমাকে "অ্যান্ড্রয়েড:" অপসারণ করতে হয়েছিল কেন "ইমেজবটন এখনও" অ্যান্ড্রয়েড: "এর সাথে কাজ করছে

<item name="android:imageButtonStyle">@style/ImageButtonmyTimeGreen</item>

0

2 দিন উত্তর অনুসন্ধানের পরে, বোতামগুলি সেটিং এআইপি <21 এ আমার জন্য কাজ করে নি।

আমার একমাত্র সমাধানটি হ'ল অ্যাপকম্প্যাটবটন টিটটিংটি কেবল বেস অ্যাপ থিম "কালার বাটননরমাল" দিয়ে নয় বরং ভিউ ব্যাকগ্রাউন্ডটিও এই জাতীয়:

public class AppCompatColorButton extends AppCompatButton {

    public AppCompatColorButton(Context context) {
        this(context, null);
    }

    public AppCompatColorButton(Context context, AttributeSet attrs) {
        this(context, attrs, android.support.v7.appcompat.R.attr.buttonStyle);
    }

    public AppCompatColorButton(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);

        if (TintManager.SHOULD_BE_USED) {
            setSupportBackgroundTintList(createButtonColorStateList(getContext(), attrs, defStyleAttr));
        }
    }

    static final int[] DISABLED_STATE_SET = new int[]{-android.R.attr.state_enabled};
    static final int[] FOCUSED_STATE_SET = new int[]{android.R.attr.state_focused};
    static final int[] PRESSED_STATE_SET = new int[]{android.R.attr.state_pressed};
    static final int[] EMPTY_STATE_SET = new int[0];

    private ColorStateList createButtonColorStateList(Context context, AttributeSet attrs, int defStyleAttr) {
        final int[][] states = new int[4][];
        final int[] colors = new int[4];
        int i = 0;

        final int themeColorButtonNormal = ThemeUtils.getThemeAttrColor(context, android.support.v7.appcompat.R.attr.colorButtonNormal);
        /*TypedArray a = context.obtainStyledAttributes(attrs, new int[] { android.R.attr.backgroundTint }, defStyleAttr, 0);
        final int colorButtonNormal = a.getColor(0, themeColorButtonNormal);*/
        TypedArray a = context.obtainStyledAttributes(attrs, android.support.v7.appcompat.R.styleable.View, defStyleAttr, 0);
        final int colorButtonNormal = a.getColor(android.support.v7.appcompat.R.styleable.View_backgroundTint, themeColorButtonNormal);
        a.recycle();
        final int colorControlHighlight = ThemeUtils.getThemeAttrColor(context, android.support.v7.appcompat.R.attr.colorControlHighlight);

        // Disabled state
        states[i] = DISABLED_STATE_SET;
        colors[i] = ThemeUtils.getDisabledThemeAttrColor(context, android.support.v7.appcompat.R.attr.colorButtonNormal);
        i++;

        states[i] = PRESSED_STATE_SET;
        colors[i] = ColorUtils.compositeColors(colorControlHighlight, colorButtonNormal);
        i++;

        states[i] = FOCUSED_STATE_SET;
        colors[i] = ColorUtils.compositeColors(colorControlHighlight, colorButtonNormal);
        i++;

        // Default enabled state
        states[i] = EMPTY_STATE_SET;
        colors[i] = colorButtonNormal;
        i++;

        return new ColorStateList(states, colors);
    }
}

তারপরে আপনি নিজের বোতামের রঙটি এভাবে সংজ্ঞায়িত করতে পারেন:

<com.example.views.AppCompatColorButton
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:backgroundTint="#ffff0000"
            app:backgroundTint="#ffff0000"
            android:text="Button"
            android:textColor="@android:color/white" />

0

এই এসও উত্তরটি আমাকে একটি উত্তরে আসতে সহায়তা করেছে https://stackoverflow.com/a/30277424/3075340

আমি এই ইউটিলিটি পদ্ধতিটি একটি বোতামের পটভূমি রঙিন সেট করতে ব্যবহার করি। এটি প্রাক-ললিপপ ডিভাইসগুলির সাথে কাজ করে:

// Set button background tint programmatically so it is compatible with pre-lollipop devices.
public static void setButtonBackgroundTintAppCompat(Button button, ColorStateList colorStateList){
    Drawable d = button.getBackground();
    if (button instanceof AppCompatButton) {
        // appcompat button replaces tint of its drawable background
        ((AppCompatButton)button).setSupportBackgroundTintList(colorStateList);
    } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
        // Lollipop button replaces tint of its drawable background
        // however it is not equal to d.setTintList(c)
        button.setBackgroundTintList(colorStateList);
    } else {
        // this should only happen if
        // * manually creating a Button instead of AppCompatButton
        // * LayoutInflater did not translate a Button to AppCompatButton
        d = DrawableCompat.wrap(d);
        DrawableCompat.setTintList(d, colorStateList);
        button.setBackgroundDrawable(d);
    }

}

কোডে কীভাবে ব্যবহার করবেন:

Utility.setButtonBackgroundTintAppCompat(myButton,
ContextCompat.getColorStateList(mContext, R.color.your_custom_color));

আপনি কেবল ব্যাকগ্রাউন্ডের রঙ পরিবর্তন করতে চান এবং সুন্দর বোতামের প্রভাবগুলি বজায় রাখতে পারেন এবং কী না তা আপনাকে কোনও কালারস্টেটলিস্ট নির্দিষ্ট করতে হবে না।


0

আমি সেট android:textColorকরতে @nullআমার বোতাম থিমে এবং এটি সাহায্য করে।

styles.xml

<style name="Button.Base.Borderless" parent="Widget.AppCompat.Button.Borderless.Colored">
    <item name="android:textColor">@null</item>
</style>

some_layout.xml

<Button
    style="@style/Button.Base.Borderless"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/hint" />

এখন বোতামের পাঠ্যের রঙটি colorAccentসংজ্ঞায়িত করা হয়েছেAppTheme

<style name="AppTheme" parent="@style/Theme.AppCompat.Light.NoActionBar">
    <item name="colorAccent">@color/colorAccent</item>
    <item name="borderlessButtonStyle">@style/Button.Base.Borderless</item>
    <item name="alertDialogTheme">@style/AlertDialog</item>
</style>

0

আপনি যদি কোটলিন ব্যবহার করেন, আপনি দেখতে পারেন মেটেরিয়ালটন থেকে সমস্ত বৈশিষ্ট্য সমর্থিত। অ্যান্ড্রয়েড: ব্যাকগ্রাউন্ড বৈশিষ্ট্যটি ব্যবহার করবেন না। মেটেরিয়াল বাটন তার নিজস্ব ব্যাকগ্রাউন্ড আঁকারযোগ্য পরিচালনা করে এবং নতুন পটভূমি নির্ধারণের অর্থ ম্যাটারিয়াল বোতাম অক্ষম রঙের আর কোনও গ্যারান্টি দিতে পারে না যে এটি পরিচয় করিয়ে দেওয়া নতুন বৈশিষ্ট্যগুলি সঠিকভাবে কাজ করবে। যদি ডিফল্ট ব্যাকগ্রাউন্ড পরিবর্তন করা হয় তবে ম্যাটেরিয়াল বোতামটি সঠিকভাবে সংজ্ঞায়িত আচরণের গ্যারান্টি দিতে পারে না। মেইনএ্যাকটিভিটি.কিটি এ

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        buttonClick.setOnClickListener {
            (it as MaterialButton).apply {
                backgroundTintList = ColorStateList.valueOf(Color.YELLOW)
                backgroundTintMode = PorterDuff.Mode.SRC_ATOP
            }
        }
    }
}

ক্রিয়াকলাপ_মাইন.এক্সএমএল এ

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/constraintLayout"
    tools:context=".MainActivity">
    <com.google.android.material.button.MaterialButton
        android:id="@+id/buttonNormal"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="24dp"
        android:text="Material Button Normal"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />
    <com.google.android.material.button.MaterialButton
        android:id="@+id/buttonTint"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="16dp"
        android:backgroundTint="#D3212D"
        android:text="Material Button Background Red"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/buttonNormal" />
    <com.google.android.material.button.MaterialButton
        android:id="@+id/buttonTintMode"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="16dp"
        android:backgroundTint="#D3212D"
        android:backgroundTintMode="multiply"
        android:text="Tint Red + Mode Multiply"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/buttonTint" />
    <com.google.android.material.button.MaterialButton
        android:id="@+id/buttonClick"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="32dp"
        android:text="Click To Change Background"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.498"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/buttonTintMode" />
</androidx.constraintlayout.widget.ConstraintLayout>

সংস্থান: উপাদান বোতাম পরিবর্তন রঙ উদাহরণ


0

আপনি যদি কোনও রঙের কোডের মাধ্যমে এটি করতে চান তবে এটি ব্যবহার করুন:

DrawableCompat.setTintList(button.getBackground(), ColorStateList.valueOf(yourColor));
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.