কীভাবে বাটনটির জন্য আকৃতি এবং নির্বাচক একই সাথে প্রয়োগ করবেন?


83

আমি একটি বোতামের জন্য একটি আকার প্রয়োগ করেছি:

<?xml version="1.0" encoding="utf-8"?>

<shape xmlns:android="http://schemas.android.com/apk/res/android"
       android:shape="rectangle" >
    <gradient android:startColor="#DD000000" android:endColor="#DD2d2d2d"  android:angle="90"></gradient>
    <corners android:radius="15dip"></corners>

</shape>

এখন আমি এর মতো একটি নির্বাচক ব্যবহার করতে চাই:

<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/active"
      android:state_pressed="true" />
<item android:drawable="@drawable/passive"/>

এই বোতামটির জন্যও এটা কি সম্ভব ...???

উত্তর:


186

এইভাবে ব্যবহার করুন:

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

   <item android:state_pressed="true" >
       <shape>.......</shape>
   </item>
   ..........
   ..........
</selector>

8
হ্যাঁ, এটি ব্যবহার করে কাজ করেছে: <নির্বাচক এক্সএমএলএনএস: অ্যান্ড্রয়েড = " স্কিমাস.অ্যান্ড্রয়েড. com/apk/res/android "> <আইটেম অ্যান্ড্রয়েড: state_pressed = "সত্য"> <আকৃতি অ্যান্ড্রয়েড: আকৃতি = "আয়তক্ষেত্র"> <কোণ অ্যান্ড্রয়েড : ব্যাসার্ধ = "15dip"> </corners> <solid android: color = "# febd26" /> </shape> </item> <item> <আকৃতি Android: আকৃতি = "আয়তক্ষেত্র"> <গ্রেডিয়েন্ট অ্যান্ড্রয়েড: শুরু রঙ = "# DD000000" অ্যান্ড্রয়েড: এন্ডারলোরার = "# ডিডি 2 ডি 2 ডি 2 ডি" অ্যান্ড্রয়েড: কোণ = "90"> << গ্রেডিয়েন্ট << কোণার অ্যান্ড্রয়েড: ব্যাসার্ধ = "15 ডিপ"> </corners> </shape> </item> </selector>
খয়ার রাজা

7
@KhawarRaza ভবিষ্যতে, আপনার যে মত তথ্য পেশ করুন প্রশ্ন , যেখানে এটি ফরম্যাট করা যায় এবং আরো সহজে খুঁজে পাওয়া যায়নি। মন্তব্যগুলি সময়ের সাথে সাথে অদৃশ্য হয়ে যায়।
টিম পোস্ট

আপনার পরামর্শ অনুসারে আমি আইটেম এলিমেন্টের অভ্যন্তরে একটি আকৃতি উপাদান যুক্ত করার চেষ্টা করেছি তবে এটি কেবল একটি বার্তা দিয়েই ত্রুটিযুক্ত হয়েছে যা 09-13 15:25:02.868: ERROR/AndroidRuntime(9129): FATAL EXCEPTION: main android.view.InflateException: Binary XML file line #13: Error inflating class <unknown>. আমাকে [ github.com/vinc3m1/ রাউন্ডেডআইজেজভিউ#usage] এর android:backgroundবৈশিষ্ট্য হিসাবে নির্বাচককে সেট করছি । এটি কীভাবে করবেন সে সম্পর্কে কারও কি কোনও ধারণা আছে? RoundedImageView
toobsco42

এই কৌশলটি ব্যবহার করার চেষ্টা করার সময়, আমি একটি ত্রুটি বার্তা পেয়েছিলাম। এ জেড_ এর উত্তর আমার পক্ষে আরও ভাল কাজ করেছে।
অ্যালান নেলসন

অ্যালান নেলসন, আমার উত্তরটি কেবল কঙ্কাল, যখন এজেড_ উদাহরণ দিয়েছেন।
হ্যানরি

26

পয়েন্ট উত্তরের বিস্তারিত

এর মধ্যে একটি রঙের সংস্থান তৈরি করুন

res / মান / color.xML

<?xml version="1.0" encoding="utf-8"?>
<resources>


    <item name="yellow" type="color">#F7B500</item>
    <item name="yellow_dark" type="color">#AC7E00</item>

    <integer-array name="androidcolors">
        <item>@color/yellow</item>
        <item>@color/yellow_dark</item>
    </integer-array>

</resources>

এখানে একটি অঙ্কনযোগ্য তৈরি করুন

res / অঙ্কনযোগ্য / বিজি_ইয়েল_আউন্ড.এক্সএমএল

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

    <solid android:color="@color/yellow" />

    <stroke
        android:width="2dp"
        android:color="@color/yellow" />

    <corners
        android:bottomLeftRadius="20dp"
        android:bottomRightRadius="20dp"
        android:topLeftRadius="20dp"
        android:topRightRadius="20dp" />

</shape>

অন্য একটি অঙ্কনযোগ্য তৈরি করুন, আপনি একই জায়গায় স্থানান্তর করতে চান এবং এটির নাম দিন

res / অঙ্কনযোগ্য / বিজি_ইলো_ডार्ক_আউন্ড.এক্সএমএল

<solid android:color="@color/yellow_dark" />

<stroke
    android:width="2dp"
    android:color="@color/yellow_dark" />

<corners
    android:bottomLeftRadius="20dp"
    android:bottomRightRadius="20dp"
    android:topLeftRadius="20dp"
    android:topRightRadius="20dp" />

এখন একটি তৈরি রঙ রাষ্ট্র তালিকা

res / color / btn_selector_yellow.xml

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

    <item android:drawable="@color/yellow" android:state_focused="true" android:state_pressed="false"/>
    <item android:drawable="@drawable/bg_yellow_dark_round" android:state_pressed="true"/>
    <item android:drawable="@drawable/bg_yellow_round"/>

</selector>

নিম্নলিখিত হিসাবে এটি আপনার বোতামে সেট করুন

<Button
                android:id="@+id/button1"
                android:layout_width="248dp"
                android:layout_height="44dp"
                android:layout_gravity="center_horizontal"
                android:layout_marginBottom="10dp"
                android:layout_marginTop="20dp"
                android:background="@color/btn_selector_yellow"
                android:text="AZ_ is so cool" />

এখন এটি থেকে স্থানান্তর করবে হলুদ বাতি

প্রতি

হলুদ অন্ধকার


এটি কাজ করে, আপনি কি রিপাল এফেক্টের জন্য এটি বাস্তবায়নের জন্য গাইড করতে পারেন?
Hardik9850


বা কেবল এটি দেখুন এখানে অনেকগুলি google.com/…
এজেড_

11

form.xml

<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <solid android:color="@color/star_off"/>
    <corners android:radius="5dp"/>
    <padding android:left="0dp" android:top="0dp" android:right="0dp" android:bottom="0dp" />
</shape>

নির্বাচক.এক্সএমএল

<selector xmlns:android="http://schemas.android.com/apk/res/android" android:exitFadeDuration="@android:integer/config_mediumAnimTime">

    <item android:drawable="@color/tab_focused" android:state_focused="true" android:state_pressed="false"/>
    <item android:drawable="@color/tab_pressed" android:state_pressed="true"/>
    <item android:drawable="@drawable/shape"/>

</selector>

4
@ অঙ্কনযোগ্য / আকৃতি.এক্সএমএল এর পরিবর্তে @ অঙ্কনযোগ্য / আকৃতি ব্যবহার করুন
খিজার হায়াত

4

আপনি এমন একটি আকার তৈরি করতে পারেন যা অভ্যন্তরের কোনও নির্বাচক ব্যবহার করছে। যদি আপনার আকারটি বিভিন্ন রাজ্যে কেবল তার রঙ পরিবর্তন করে থাকে তবে এটি অনেক পরিষ্কার।

color / color_selector.xml

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:color="@color/blue_dark" android:state_pressed="true" />
    <item android:color="@color/blue_light" />
</selector>

অঙ্কনযোগ্য / শেপ.এক্সএমএল

<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <solid android:color="@color/color_selector" />
    <corners android:bottomLeftRadius="6dip" android:bottomRightRadius="6dp" />
    <padding android:bottom="0dip" android:left="0dip" android:right="0dip" android:top="0dip" />
</shape>

এটি আমার পক্ষে কাজ করে না, রঙিন নির্বাচকটি কখনই ব্যবহৃত হয় না ... যদিও আমি সম্মতি
জানাই

@ জিম এটি কাজ করছে। এই লিঙ্কটি দেখুন stackoverflow.com/questions/1219312/android-selector-text-color
জি ফ্যাং

4
আমি জানি এটি পুরানো, তবে কেবল রেকর্ডের জন্য, এই পদ্ধতিটি কেবল অ্যান্ড্রয়েড 5.0 এবং উচ্চতরতে কাজ করে।
লায়ন্সক্রাইব

4

আমি জানি বেশ দেরিতে তবে এখানে একটি সমাধানের উদাহরণ

 <TextView
            android:id="@+id/txt_out_going_calls"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_margin="04dp"
            android:layout_weight="1"
            android:background="@drawable/header_text_view_selector"
            android:gravity="center"
            android:text="@string/outgoing_calls_tab_button_text"
            android:textColor="@color/home_text_color" />

এবং আমার header_text_view_selector

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

        <shape xmlns:android="http://schemas.android.com/apk/res/android">
            <solid android:color="@color/home_fragment_tab_color_selected"/>
            <corners android:radius="25dip" />
            <padding android:bottom="08dip" android:left="9dip" android:right="9dip" android:top="08dip" />
        </shape>
    </item>
    <item android:state_selected="false">

        <shape>
            <solid android:color="@color/home_fragment_tab_color_simple"/>
            <corners android:radius="25dip" />
            <padding android:bottom="08dip" android:left="9dip" android:right="9dip" android:top="08dip" />
        </shape>
    </item>
</selector>

সুতরাং মূলত আমি একটি বৃত্তাকার তৈরি textview নির্বাচকের সাথে । এখানে শুধুমাত্র হ্যান্ডলিং তোমার state_selectedএবং not_selected। আশা করি এটা সাহায্য করবে


3

এটি আমার পথ, এবং এটি কার্যকর!

<item android:state_pressed="true">

    <shape android:shape="oval">


        <gradient android:centerX=".6"
            android:centerY=".40"
            android:endColor="@color/colorPrimary"
            android:gradientRadius="20"
            android:startColor="@color/colorPrimary"
            android:type="radial" />

        <stroke android:width="1dp"
            android:color="#FFFFFF" />

        <size android:width="55dp"
            android:height="55dp" />

    </shape>
</item>

<item android:state_focused="false">
    <shape android:shape="oval">


        <gradient android:centerX=".6"
            android:centerY=".40"
            android:endColor="@android:color/transparent"
            android:gradientRadius="20"
            android:startColor="@android:color/transparent"
            android:type="radial" />

        <stroke android:width="1dp"
            android:color="#FFFFFF" />

        <size android:width="55dp"
            android:height="55dp" />

    </shape>
</item>


0

আপনি কোনও চিত্র ব্যবহার করার সাথে সাথে আপনার আকারের নামটি ব্যবহার করুন এবং আপনি ইমেজ ব্যবহার করার সাথে সাথে এটি নির্বাচক ব্যবহার করুন। চেষ্টা করুন আপনি কোনও সমস্যার মুখোমুখি হবেন না। আপনি কি জিজ্ঞাসা করা হয় যে কি?


4
আপনার আকারটি এক্সএমএলকে অঙ্কনযোগ্য করে রাখুন এবং এন্ড্রয়েডটি পাস করুন: অঙ্কনযোগ্য = "@ অঙ্কনযোগ্য / আকৃতি_এক্সএমএল" আপনার নির্বাচকের এবং আপনার নির্বাচকটিকে আপনার দৃষ্টিতে ব্যবহার করুন ....
ভিনিত শুক্লা

4
কোড স্নিপেট সহ আরও ভাল ফর্ম আপনার উদাহরণ লিখুন।
রায় লি

0

আমার উদাহরণটি স্টেট_প্রেসযুক্ত একটি বৃত্ত বোতাম। কোড বেলো:

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


    <item android:state_pressed="true">
        <shape android:shape="oval">
            <solid android:color="@color/light_primary_color" />
        </shape>

    </item>
    <item>
        <shape android:shape="oval">
            <solid android:color="@color/accent_color" />
        </shape>
    </item>

</selector>

0

আরও পুনঃব্যবহারযোগ্য হতে, আপনি একক বৈশিষ্ট্যে রাজ্য সেট করতে পারেন। আপনার আকারগুলি নকল করা এড়িয়ে চলুন

<selector
    xmlns:android="http://schemas.android.com/apk/res/android"
>
    <item>
        <shape android:shape="rectangle" >
            <corners android:radius="5dp"/>
            <solid
                android:state_enabled="false"
                android:color="@color/transparent"
            />
            <solid
                android:state_enabled="true"
                android:color="@color/background"
            />
            <stroke
                android:width="@dimen/dividerHeight"
                android:color="@color/dividerLight"
            />
        </shape>
    </item>
</selector>

আমি একবার এই পদ্ধতিটি ব্যবহার করে প্রোগ্রামিয়ালি ব্যাকগ্রাউন্ড সেট করতে সক্ষম হয়েছি।


এটি কাজ করে না বলে মনে হচ্ছে। আমি মনে করি নির্বাচককে একাধিক আইটেমের শিশু থাকতে হবে এবং প্রতিটি আইটেমের জন্য রাষ্ট্র সেট করতে হবে।
bmaupin
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.