অ্যান্ড্রয়েডে একটি রেডিওবটন এবং এর লেবেলের মধ্যে মার্জিন যুক্ত করবেন?


90

অ্যান্ড্রয়েডের অন্তর্নির্মিত উপাদানগুলি ব্যবহার করার সময় কি কোনও রেডিওবটন এবং লেবেলের মধ্যে কিছুটা জায়গা যোগ করা সম্ভব? ডিফল্টরূপে পাঠ্যটিকে কিছুটা স্ক্র্যাচ করা লাগছে।

<RadioButton android:id="@+id/rb1"
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content"
    android:text="My Text"/>

আমি কয়েকটি জিনিস চেষ্টা করেছি:

  1. মার্জিন এবং প্যাডিং নির্দিষ্ট করে পুরো উপাদান (বোতাম এবং পাঠ্য একসাথে) এর চারপাশে স্থান যুক্ত হবে বলে মনে হচ্ছে। এটি বোধগম্য, তবে আমার যা প্রয়োজন তা করেন না।

  2. এক্সএমএল এর মাধ্যমে চেক করা এবং চেক করা না হওয়া রাজ্যের জন্য চিত্র নির্দিষ্ট করে একটি কাস্টম অঙ্কনযোগ্য তৈরি করা, তারপরে প্রতিটি চিত্রের ডানদিকে কয়েকটি অতিরিক্ত পিক্সেল যুক্ত করা। এটি কাজ করা উচিত, তবে এখন আপনি ডিফল্ট UI এর বাইরে পা রাখছেন। (বিশ্বের শেষ নয়, তবে আদর্শ নয়)

  3. প্রতিটি লেবেলের শুরুতে অতিরিক্ত শ্বেত স্থান যোগ করুন। অ্যান্ড্রয়েড "আমার স্ট্রিং" এর মতো একটি শীর্ষস্থানীয় স্থানের অক্ষর ছাঁটাই বলে মনে হচ্ছে, তবে ইউনিকোড ইউ + 00A0 নির্দিষ্ট করে যেমন "\ u00A0 মাই স্ট্রিং" কৌশলটি করে। এটি কাজ করে তবে মনে হচ্ছে এটি মলিন।

এর থেকে আরও ভাল সমাধান?

উত্তর:


121

যেহেতু এখন এটি পড়ছেন, গ্রহণযোগ্য উত্তরটি নতুন এপিআইগুলিতে খুব বেশি প্যাডিংয়ের কারণে কিছু লেআউট সমস্যা সৃষ্টি করবে।

এপিআই <= 16 এ আপনি paddingLeftরেডিও বোতামের ভিউ সীমানার তুলনায় প্যাডিং সেট করতে রেডিও বোতামে সেট করতে পারেন । অতিরিক্তভাবে, প্যাচ নয়টি পটভূমিও ভিউটির সাথে সম্পর্কিত ভিউ সীমা পরিবর্তন করে।

এপিআই> = 17 এ paddingLeft(বা paddingStart) রেডিও বোতামের আঁকতে সক্ষম relation একই প্যাচ নাইন সম্পর্কে প্রযোজ্য। প্যাডিং পার্থক্য আরও ভালভাবে চিত্রিত করতে সংযুক্ত স্ক্রিনশটটি দেখুন।

আপনি যদি কোডটি খনন করেন তবে আপনি API 17 এ একটি নতুন পদ্ধতি পাবেন যা getHorizontalOffsetForDrawables নামে পরিচিত । রেডিও বোতামের জন্য বাম প্যাডিং গণনা করার সময় এই পদ্ধতিটি বলা হয় (সুতরাং ছবিতে অতিরিক্ত স্থান চিত্রিত করা)।

টিএল; ডিআর paddingLeftআপনার>> ১ minSdkVersionis থাকলে কেবল ব্যবহার করুন you

স্ক্রিনশটগুলি একত্র করুন যা এপিআই সংস্করণগুলির মধ্যে বাম প্যাডিং পার্থক্য দেখায়


4
API 17 android.os.Build.VERSION_CODES.JELLY_BEAN_MR1 হয়
KarenAnne

11
এটি করার সর্বোত্তম উপায় হ'ল "মান-ভি 17" ডিরেক্টরি সহ; আপনার API 17+ মাত্রাটি সেখানে একটি উত্স xML এ এবং 16 এবং নীচের জন্য স্ট্যান্ডার্ড একটিকে কেবল সাধারণ "মান" দিয়ে দিন।
একেন্ট

16
গুগল বিকাশকারী / পরিচালনা কীভাবে আমাদের সাথে স্বাভাবিক ডিভ ব্যবহার করে। তারা যখনই চায়, যা চায় তাই করে। ধারাবাহিকতা এবং অখণ্ডতা তাদের কাছে কিছুই বোঝায় না।
ইয়ার

66

এটি আপনার সমস্যার সমাধান করবে কিনা তা নিশ্চিত নন, তবে আপনি কি রেডিও বোতামের "প্যাডিং বাম" সম্পত্তি 50 ডিপ বা তারও বেশি মূল্য দিয়ে চেষ্টা করেছেন?


4
এটি কাজ করে এবং 50 ডিপ ডিফল্ট অঙ্কনযোগ্য এর প্রস্থ আবরণ করার জন্য প্রয়োজন। প্রথমে আমি 20dip ব্যবহার করেছি এবং পাঠ্যটি বাম দিকে সরানো হয়েছে! কারণ অ্যাঙ্করিং পয়েন্টটি অঙ্কনযোগ্যের ডান প্রান্ত নয়; এটি অঙ্কনযোগ্য বাম প্রান্ত।
রবার্ট ক্লেপুল

58

আমি বেশ কয়েকটি উপায়ে চেষ্টা করেছি এবং এমুলেটর এবং ডিভাইস উভয় ক্ষেত্রেই এটির সাথে সঠিকভাবে কাজ করে শেষ করেছি:

    <RadioButton
        android:background="@android:color/transparent"
        android:button="@null"
        android:drawableLeft="@drawable/your_own_selector"
        android:drawablePadding="@dimen/your_spacing" />
  • অ্যান্ড্রয়েড: ব্যাকগ্রাউন্ডটি স্বচ্ছ হওয়া দরকার যেমন এপিআই 10 তে মনে হয় অভ্যন্তরীণ প্যাডিং সহ একটি ব্যাকগ্রাউন্ড রয়েছে (অন্যান্য এপিসের সাথে চেষ্টা করা হয়নি তবে সমাধানটি অন্যদের উপরও কার্যকর হয়)
  • অ্যান্ড্রয়েড: প্যাডিংগুলি অন্যথায় সঠিকভাবে কাজ করবে না বলে বোতামটি নাল হওয়া দরকার
  • অ্যান্ড্রয়েড: অ্যান্ড্রয়েড: বোতামের পরিবর্তে অঙ্কনযোগ্য লেফট নির্দিষ্ট করা দরকার
  • অ্যান্ড্রয়েড: অঙ্কনযোগ্য প্যাডিং হ'ল এমন স্থান যা আপনার অঙ্কনযোগ্য এবং আপনার পাঠ্যের মধ্যে থাকবে

4
সেরা উত্তর! আপনি অ্যান্ড্রয়েডও সেট করতে পারেন: ব্যাকগ্রাউন্ড = "@ নাল" এবং কোনও প্যাডিং না দিয়ে যেমন বলেছিলেন তেমন দেখতে পাবেন।
সাইয়ানকডার

4
যখন আমি অ্যান্ড্রয়েড সেট করছি: বোতাম = "@ নাল", রেডিও বোতামটি চেক হচ্ছে না (ক্লিক করা)। আমি কিছু ভুল করছি দয়া করে সহায়তা stackoverflow.com/questions/28052820/...
Shirish Herwade

@ শিরীশ এই সমাধানটির আপনার বোতামটি ক্লিক না হওয়ার সাথে কিছুই করার নেই। আমি কেবল এটি বাস্তবায়ন করেছি এবং এটি ক্লিক করা হয়েছে।
ইয়ার

সমাধানের জন্য ধন্যবাদ!
বিমলথীঠন রাজাসেকরণ

33

যোগ মার্জিন একটি মধ্যবর্তী radiobutton তার ট্যাগ দ্বারা paddingLeft :

android:paddingLeft="10dip"

কেবল আপনার কাস্টম প্যাডিং সেট করুন ।

রেডিওবাটনের এক্সএমএল সম্পত্তি।

<RadioButton
    android:id="@+id/radHighest"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:button="@drawable/YourImageResource"
    android:drawablePadding="50dp"
    android:paddingLeft="10dip"
    android:text="@string/txt_my_text"
    android:textSize="12sp" />

সম্পন্ন


22

নিম্নলিখিত এক্সএমএল বৈশিষ্ট্যগুলি ব্যবহার করুন। এটা আমার জন্য কাজ করেছে

API এর জন্য <= 16 ব্যবহার করুন

android:paddingLeft="16dp"

এপিআই> = 17 ব্যবহারের জন্য

android:paddingStart="@16dp"

যেমন:

<android.support.v7.widget.AppCompatRadioButton
        android:id="@+id/popularityRadioButton"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:checked="true"
        android:paddingEnd="@dimen/radio_button_text"
        android:paddingLeft="@dimen/radio_button_text"
        android:paddingRight="@dimen/radio_button_text"
        android:paddingStart="@dimen/radio_button_text"
        android:text="Popularity"
        android:textSize="@dimen/sort_dialog_text_size"
        android:theme="@style/AppTheme.RadioButton" />

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

আরও আরও: drawablePaddingগুণাবলী কাজ করে না। আপনি কেবল আপনার রেডিও বোতামে একটি অঙ্কনযোগ্য যুক্ত করলে এটি কেবলমাত্র কাজ করে। যেমন:

<RadioButton
    android:id="@+id/radioButton"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center_horizontal"
    android:button="@null"
    android:drawableEnd="@android:drawable/btn_radio"
    android:drawablePadding="56dp"
    android:drawableRight="@android:drawable/btn_radio"
    android:text="New RadioButton" />

6

যাচাই করার জন্য এই মুহূর্তে চেষ্টা করে দেখতে পারেন না, তবে আপনি কী অ্যানড্রয়েড: অঙ্কনযোগ্য প্যাডিং আপনার প্রয়োজনীয়টি করেন তা দেখার চেষ্টা করেছেন ?


4
এইচএম এটি চেষ্টা করে দেখুন এবং এই পরিস্থিতিতে এর কোনও প্রভাব আছে বলে মনে হয় না। পরামর্শের জন্য ধন্যবাদ, এটি অবশ্যই বর্ণনা থেকে সঠিক শোনাচ্ছে: "অঙ্কনযোগ্য এবং পাঠ্যের মধ্যে প্যাডিং"।
allclaws

4
final float scale = this.getResources().getDisplayMetrics().density;
checkBox.setPadding(checkBox.getPaddingLeft() + (int)(10.0f * scale + 0.5f),

    checkBox.getPaddingTop(),
    checkBox.getPaddingRight(),
    checkBox.getPaddingBottom());

1

অঙ্কনযোগ্য এবং পাঠ্যের মধ্যে প্যাডিং। এটি এক্সএমএল ফাইলে নীচে লাইন যুক্ত করে অর্জন করা হবে। android:drawablePadding="@dimen/10dp"


আমি ঠিক এর জন্য খুঁজছিলাম ... আমাকে অনেক সাহায্য করেছে
শিরিশ হার্ভাডে

4
@dimen/10dpখারাপ অনুশীলন
ভ্লাদ

0

আমি চেষ্টা করেছি, "অ্যান্ড্রয়েড: প্যাডিং লেফ্ট" কাজ করবে। প্যাডিং লেফট কেবল পাঠ্যকে প্রভাবিত করবে যখন রেডিও চিত্রটি মূল অবস্থানে থাকবে।


-1

"অ্যান্ড্রয়েড: প্যাডিং লেফট" কেবলমাত্র অ্যান্ড্রয়েড ৪.২.২ এর অধীনে সঠিকভাবে কাজ করছে বলে মনে হচ্ছে

আমি অ্যান্ড্রয়েডের প্রায় সমস্ত সংস্করণ চেষ্টা করেছি এবং এটি কেবল ৪.২.২ সংস্করণে কাজ করে।


-1

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

<View
        android:layout_width="20dp"
        android:layout_height="1dp" />

এটি আপনাকে 20 ডিপি প্যাডিং দেয়।


-1

আমি এখানে একটি উত্তর খুঁজছিলাম এবং সবচেয়ে সহজ উপায় (কিছু চিন্তাভাবনা করার পরে) লেবেলের শুরুতে ফাঁকা স্থান যুক্ত করছিল

<RadioGroup
     android:orientation="horizontal"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:layout_alignRight="@+id/btnChangeMode"
     android:layout_marginTop="10dp"
     android:layout_marginBottom="10dp"
     android:layout_below="@+id/view3"
     android:gravity="center|left"
     android:id="@+id/ledRadioGroup">
<RadioButton
         android:button="@drawable/custom_radio_button"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:text=" On"
         android:layout_marginRight="6dp"
         android:id="@+id/ledon"
         android:textColor="@color/white" />
<RadioButton
         android:button="@drawable/custom_radio_button"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:text=" Off"
         android:layout_marginLeft="6dp"
         android:id="@+id/ledoff"
         android:textColor="@color/white" />

-1

আমার জন্য কাজ করে:

<?xml version="1.0" encoding="utf-8"?>
    <selector xmlns:android="http://schemas.android.com/apk/res/android">
        <item android:state_checked="true">
            <layer-list>
                <item android:right="5dp">
                    <shape android:paddingLeft="5dp" android:shape="oval">
                     <size android:width="20dp" android:height="20dp" />
                     <solid android:color="@color/blue" />
            </shape>
        </item>
    </layer-list>
</item>
<item android:paddingLeft="5dp" android:state_checked="false">
    <layer-list>
        <item android:right="5dp">
            <shape android:paddingLeft="5dp" android:shape="oval">
                <size android:width="20dp" android:height="20dp" />
                <solid android:color="@color/grey" />
                </shape>
            </item>
        </layer-list>
    </item>
</selector>

-1
<RadioButton
                android:id="@+id/rb1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginTop="5dp"
                android:background="@null"
                android:paddingLeft="20dp"
                android:text="1"
                android:textColor="@color/text2"
                android:textSize="16sp"
                android:textStyle="bold" />

এটি কীভাবে সমস্যার সমাধান করে তা
বোঝাতে

-1

আপনি আপনার এক্সএমএল ফাইলে এই কোডটি করতে পারেন

<RadioButton
android:id="@+id/rButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:drawablePadding="50dp"
android:paddingLeft="10dip"
android:text="@string/your_text" />

বা এটিকে ক্রিয়াকলাপ শ্রেণিতে ব্যবহার করুন

radioButton.setPadding(12, 10, 0, 10);

-1

স্টাইল.এক্সএমএল এর মতো একটি স্টাইল তৈরি করুন

<style name="Button.Radio">

    <item name="android:paddingLeft">@dimen/spacing_large</item>
    <item name="android:textSize">16sp</item>
</style>

স্টাইলটি রেডিও বোতামে রাখুন

 <RadioButton
                android:id="@+id/rb_guest_busy"
                android:layout_width="match_parent"
                android:layout_height="48dp"
                android:text="@string/guest_is_waiting"
                android:textSize="@dimen/font_size_3x_medium"
                android:drawablePadding="@dimen/spacing_large"
                android:textColor="@color/color_text_heading_dark"
                style="@style/Button.Radio"/>

রেডিওবটন অপ্রত্যক্ষভাবে বোতামের উত্তরাধিকার সূত্রে আপনি যে কোনও বৈশিষ্ট্যটিকে বোতামের মতোই পরিবর্তন করতে পারেন।


-1

আমি জানি এটি একটি পুরানো প্রশ্ন, তবে এই সমাধানের সাথে অবশেষে আমি মনের শান্তি পেয়েছি এবং এপিআই স্তরটি ভুলে গেছি।

ডান পাশের উল্লম্ব পাঠ্য দর্শন সহ বাম পাশের উল্লম্ব রেডিওগ্রুপ।

 <LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal">

    <RadioGroup
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:gravity="center_vertical">
        <RadioButton
            android:id="@+id/radio1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"/>
        <RadioButton
            android:id="@+id/radio2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"/>
    </RadioGroup>

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:orientation="vertical">
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:layout_marginLeft="8dp"
            android:gravity="center_vertical"
            android:text="Radio 1"/>
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:layout_marginLeft="8dp"
            android:gravity="center_vertical"
            android:text="Radio 2"/>
    </LinearLayout>
</LinearLayout>

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

-1

আপনি রেডিও বোতামটির মাধ্যাকর্ষণ বৈশিষ্ট্যটি ব্যবহার করে দেখতে পারেন।

<RadioButton
                        android:id="@+id/rb_all"
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:checked="true"
                        android:gravity="right|center_vertical"
                        android:padding="@dimen/padding_30dp"
                        android:text="@string/filter_inv_all"
                        android:textColor="@color/black"
                        android:textSize="@dimen/text_size_18" />

এটি পাঠ্যটিকে ডানদিকে প্রান্তিককরণ করবে। ছবিতে প্রথম রেডিও দেখুন।

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

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