অ্যান্ড্রয়েড - চেকবক্স এবং পাঠ্যের মধ্যে ব্যবধান


256

চেকবক্স নিয়ন্ত্রণে চেকবক্স এবং সম্পর্কিত পাঠ্যের মধ্যে প্যাডিং যুক্ত করার কোনও সহজ উপায় আছে কি?

আমি কেবল নেতৃস্থানীয় স্পেস যোগ করতে পারি না, কারণ আমার লেবেলটি বহু-লাইন।

যেমনটি রয়েছে, পাঠ্যটি চেকবাক্সের খুব কাছেই রয়েছে: বিকল্প পাঠ


1
একটি সরল সমাধান ব্যবহার করা হবে TextViewসঙ্গে drawableLeftএবং ব্যবহার drawablePaddingপাঠ্যে স্থান দিতে। কোডে কেবলমাত্র নির্বাচিত এবং অনির্বাচিত রাজ্যে টগল করুন।
মুহাম্মদ বাবর

আমি কেবলমাত্র অ্যান্ড্রয়েড নামে একটি নতুন এক্সএমএল অ্যাট্রিবিউট লক্ষ্য করেছি: অঙ্কনযোগ্য প্যাডিং, যা অঙ্কনযোগ্য এবং পাঠ্যের মধ্যে ব্যবধান স্থাপন করার কথা। আমি এটি চেষ্টা করি নি তবে আমি মনে করি এটি এই সমস্যার জন্য গুগলের "সত্য-পরবর্তী" সমাধান।
পেরি হার্টম্যান

উত্তর:


333

আমি আমার নিজের প্রশ্নের উত্তর দিতে ঘৃণা করি, তবে এই ক্ষেত্রে আমি মনে করি আমার এটি করা দরকার। এটি যাচাইয়ের পরে, @ ফালমারি তার উত্তরটি সহ সঠিক পথে ছিলেন। সমস্যাটি হ'ল অ্যান্ড্রয়েডের চেকবক্স নিয়ন্ত্রণ ইতিমধ্যে অ্যান্ড্রয়েড: প্যাডিং লেফট সম্পত্তিটি যেখানে রয়েছে সেখানে পাঠ্যটি পেতে ব্যবহার করে।

লাল রেখাটি পুরো চেকবক্সের প্যাডিং লেফট অফসেট মান দেখায়

বিকল্প পাঠ

আমি যদি কেবলমাত্র আমার এক্সএমএল লেআউটে সেই প্যাডিংটিকে ওভাররাইড করি তবে এটি লেআউটটি মিস করবে। লেডিং লেফট = "0" কী সেটিংয়ের সেটিংস এখানে রয়েছে:

বিকল্প পাঠ

দেখা যাচ্ছে আপনি XML এ এটি ঠিক করতে পারবেন না। আপনি কোড এ আছে। এখানে 10 ডিপি এর হার্ডকোডযুক্ত প্যাডিং বৃদ্ধি সহ আমার স্নিপেট।

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

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

বিকল্প পাঠ

আপডেট - লোকেরা সম্প্রতি নীচের উত্তরে উল্লেখ করেছে যেহেতু, এই আচরণটি দৃশ্যত জেলি বিন (৪.২) এ পরিবর্তিত হয়েছে। আপনার অ্যাপ্লিকেশনটির কোন সংস্করণটি চলছে তা পরীক্ষা করে সঠিক পদ্ধতিটি ব্যবহার করতে হবে।

৪.৩++ এর জন্য এটি কেবল প্যাডিং_ বাম সেট করছে। বিশদ জন্য htafoya এর উত্তর দেখুন।


108
আপনার নিজের প্রশ্নের উত্তর দেওয়ার ক্ষেত্রে কোনও ভুল নেই - ভবিষ্যতে অন্য কারওরও সম্ভবত এই সমস্যা হবে এবং আপনি কেবল একটি ভাল, বিস্তৃত উত্তর দিয়েছেন।
অ্যান্ড্রু কে এস

4
শুধু সেটিংয়ে paddingLeft="48sp"কি সমস্যা? আমি স্কেল এবং অভিমুখীকরণ পরিবর্তন করলেও এখানে সূক্ষ্মভাবে কাজ করে। আপনার কোড আমাকে আইটেমের তালিকার তুলনায় ইরটিক প্যাডিং মান দেয়।
হারপো

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

2
@ ব্লুন্ডেল - অগত্যা নয়। অ্যান্ড্রয়েডের মুক্ত উত্স। কোনও ডিভাইস বিক্রেতা সম্পূর্ণ ভিন্ন আকারের সাথে সম্পূর্ণ ভিন্ন গ্রাফিকের বিকল্প নিতে পারে। তারা কোনও কারণে এই জাতীয় জিনিসগুলি করতে পছন্দ করে।
ডগডব্লিউ

2
দুর্ভাগ্যক্রমে, আপনি getView()কাস্টম অ্যাডাপ্টারের ক্ষেত্রে এই সমাধানটি ব্যবহার করতে পারবেন না (যদি আপনি নিজের মতামতগুলি পুনরায় ব্যবহার করেন), যেহেতু প্যাডিং অবিরাম বাড়বে will এই সমস্যা আমি ভালো কিছু ব্যবহার ছিল ঠিক করার জন্য: boolean isHackNeeded = Build.VERSION.SDK_INT < 17; float scale = context.getResources().getDisplayMetrics().density; if (isHackNeeded) {CheckBox rb = new CheckBox(context); this.PADDING = rb.getPaddingLeft() + Math.round(10.0f * scale); } else { this.PADDING = Math.round(10.0f * scale); }। এবং তারপরে PADDINGআমি প্রতিটি চেকবক্সের জন্য ব্যবহার করব:check.setPadding(PADDING, check.getPaddingTop() ...
অ্যালেক্স সেমেনিয়ুক

133

@ ডগডাব্লু প্রতিক্রিয়া দেওয়া, সংস্করণ পরিচালনা করতে আমি যা করি তা সহজ, আমি আমার চেকবক্স ভিউতে যুক্ত করি:

android:paddingLeft="@dimen/padding_checkbox"

যেখানে মাত্রা দুটি মান ফোল্ডারে পাওয়া যায়:

মান

<resources>

    <dimen name="padding_checkbox">0dp</dimen>

</resources>

মান-ভি 17 (4.2 জেলিবিয়ান)

<resources>

    <dimen name="padding_checkbox">10dp</dimen>

</resources>

আমার একটি কাস্টম চেক আছে, আপনার সেরা পছন্দের জন্য ডিপিএস ব্যবহার করুন।


2
এটি এখন পর্যন্ত সেরা উত্তর। যদিও, এটি সত্যই হওয়া উচিত values-v17ঠিক যেমন এপিআই 17 তে চালু হয়েছিল (উপরের কিছু পোস্ট অনুসারে)
আইসক্রিমম্যান

একটি নিখুঁত উত্তর, কেবল পুরানো এপিআইএসের জন্য (মান / ডাইমেনস) আমি প্যাডিং_চেকবক্সকে 0 ডিপ সেট করেছিলাম (এপিআই 10 মার্জিনে ইতিমধ্যে বিশাল) এবং htafoya এর পরামর্শ অনুসারে মান-v17 10dip এর জন্য।
ইয়ার

70

এর android:drawableLeftপরিবর্তে বৈশিষ্ট্যটি ব্যবহার করুন android:button। অঙ্কনযোগ্য এবং পাঠ্য ব্যবহারের মধ্যে প্যাডিং সেট করার জন্য android:drawablePadding। অঙ্কনযোগ্য ব্যবহার অবস্থান android:paddingLeft

<CheckBox
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:button="@null"
        android:drawableLeft="@drawable/check_selector"
        android:drawablePadding="-50dp"
        android:paddingLeft="40dp"
        />

ফলাফল


1
হাই, এটি দুর্দান্ত পদ্ধতি তবে লক্ষ্য করুন যে আপনি চেকবক্সের ডিফল্ট চিত্রের অতিরিক্ত বাম মার্জিন bcoz পেয়েছেন .. এর জন্য কোনও সমাধান
Code_Life

4
সেট android:background="@android:color/transparent"এবং বাম মার্জিন
অদৃশ্য হয়ে

2
উপরের কোডটি আমার রেডিও বোতামগুলির জন্য পুরোপুরি কাজ করেছে এবং এটি 4.2 ওএস সীমানা জুড়ে সামঞ্জস্যপূর্ণ। ধন্যবাদ!
gnichola

1
এটি অনেক বেশি র‌্যাঙ্ক করা উচিত। @Gnichola যেমন বলেছে, এটি অ্যান্ড্রয়েড সংস্করণ জুড়ে কাজ করে এবং এটি বেশ পরিষ্কার সমাধান। একটি শৈলী তৈরি করুন এবং এটি আপনার থিমে এটি নির্ধারণ করুন: <item name="android:checkboxStyle">@style/CheckBox</item> এইভাবে, আপনি শৈলীর একবার সংজ্ঞা দিয়েছেন এবং কেবল একবারেই উল্লেখ করেছেন।
রোসোমাক

1
নাল (বা কিছু কাস্টম) তেও ব্যাকগ্রাউন্ড সেট করুন, অন্যথায় ললিপপ + পুরো দর্শনকে ঘিরে একটি বিশাল চেনাশোনা রিপল প্রভাব পায়। আপনি একটি v21 বোতাম অঙ্কনযোগ্য ব্যবহার ব্যবহার করতে পারেন <লহরী> একটি আরো উপযুক্ত লহরী প্রতিহত করা জন্য ট্যাগ।
টম

34

অ্যান্ড্রয়েড 2.২ জেলি বিন (এপিআই 17) বোতাম ড্র্যাবল (ইনটসের ডান প্রান্ত) থেকে পাঠ্য প্যাডিং লেফট রাখে। এটি আরটিএল মোডের জন্যও কাজ করে।

৪.২ প্যাডিং লেফটটি ড্র্যাবলযোগ্য বোতামটি উপেক্ষা করছিল - এটি কমপাউন্ডবটন ভিউয়ের বাম প্রান্ত থেকে নেওয়া হয়েছিল।

আপনি এটি এক্সএমএল এর মাধ্যমে সমাধান করতে পারবেন - পুরানো অ্যান্ড্রয়েডগুলিতে প্যাডিং লেফটটি বোতাম ড্রয়েবল.উইউথ + প্রয়োজনীয়স্পেসে সেট করুন। শুধুমাত্র এপিআই 17 আপ এ এটি প্রয়োজনীয় স্পেসে সেট করুন। উদাহরণস্বরূপ, মাত্রা সংস্থানগুলি ব্যবহার করুন এবং মান-v17 রিসোর্স ফোল্ডারে ওভাররাইড করুন।

পরিবর্তনটি android.widget.CompoundButton.getCompoundPaddingLeft () এর মাধ্যমে প্রবর্তিত হয়েছিল;


4
এটি এখানে একমাত্র সঠিক উত্তর - এটি সমস্যাটি চিহ্নিত করে এবং সহজ সমাধান সরবরাহ করে, যা আমি একাধিক বাণিজ্যিক অ্যাপ্লিকেশনগুলিতে সফলভাবে ব্যবহার করেছি।
21

1
এক্সএমএলে আপনি কীভাবে বোতাম ড্রভযোগ্য.উইথথ পাবেন বা আপনি এটি হার্ড কোড করেন?
জ্যারেড কেলস

1
আমি মুছে ফেলে পুরানো কোডে এই সমস্যাটি সমাধান করতে পেরেছি android:background="@android:color/transparent"
সেবেক

গৃহীত উত্তরটি দুর্দান্ত এবং কার্যকরী, তবে এটি একটি সহজ এবং কার্যকর। এটি উত্তর গ্রহণ করা উচিত।
রিয়াজ মুর্শেদ

27

হ্যাঁ, আপনি প্যাডিং যুক্ত করে প্যাডিং যুক্ত করতে পারেন।

android:padding=5dp


4
এটি আসলে কাজ করে ... সাজানো। একটির জন্য, কেবল প্যাডিংফিটের প্রয়োজন, সমস্ত প্যাডিং নয়। তবে, দেখে মনে হচ্ছে প্যাডিংফিটটি ইতিমধ্যে প্রায় 40dp এর মান সেট করা আছে। যদি আমি এটি> 40 ডিপি সেট করে রাখি তবে এটি সরে যায়, যদি আমি সেট করি <40 ডিপি এটি চেকবক্সের নীচে চলে moves আমি এটিকে সঠিক হিসাবে চিহ্নিত করব এবং অন্য একটি প্রশ্ন খুলব, কারণ এটি সম্পর্কে আমার উদ্বেগ রয়েছে।
ডগডব্লিউ

আচ্ছা আপনার লেআউটটি না দেখে আমার কোনও ধারণা নেই।
ফালমারি

হ্যাঁ কাজ করছে না ... বিশেষত স্যামসাং ডিভাইসে আমার সমস্যা হয়েছে।
রঞ্জিত কুমার

1
প্যাডিং যুক্ত করে প্যাডিং যুক্ত করে বৈধ শোনায়!
সংক্ষিপ্তসার

21

আপনি যদি কোড ছাড়াই একটি পরিষ্কার নকশা চান, ব্যবহার করুন:

<CheckBox
   android:id="@+id/checkBox1"
   android:layout_height="wrap_content"
   android:layout_width="wrap_content"
   android:drawableLeft="@android:color/transparent"
   android:drawablePadding="10dp"
   android:text="CheckBox"/>

কৌশলটি হ'ল রঙ স্বচ্ছ করতে সেট করুন android:drawableLeftএবং এর জন্য একটি মান নির্ধারণ করুন android:drawablePadding। এছাড়াও, স্বচ্ছতা আপনাকে এই কৌশলটি পার্শ্ব প্রতিক্রিয়া ছাড়াই যে কোনও পটভূমির রঙে ব্যবহার করতে দেয় - যেমন রঙের অমিল।


16

এপিআই 17 এবং তারপরের, আপনি ব্যবহার করতে পারেন:

অ্যান্ড্রয়েড paddingStart = "24dp"

এপিআই 16 এবং নীচে, আপনি ব্যবহার করতে পারেন:

অ্যান্ড্রয়েড paddingLeft = "24dp"


1
খুব ভাল উত্তর। প্যাডিং কীভাবে চেক বক্স এবং পাঠ্যের মধ্যে স্থান দেবে তা আমি ভাবতে পারি না। সাধারণত প্যাডিং বাম মানে উপাদানটির বাম অংশ।
মোহাম্মদ ইব্রাহিম

14

আমার ক্ষেত্রে আমি এক্সএমএলে নিম্নলিখিত চেকবক্স অ্যাট্রিবিউটটি ব্যবহার করে এই সমস্যার সমাধান করেছি:

*

অ্যান্ড্রয়েড paddingLeft = "@ dimen / activity_horizontal_margin"

*


খুব ভাল উত্তর। প্যাডিং কীভাবে চেক বক্স এবং পাঠ্যের মধ্যে স্থান দেবে তা আমি ভাবতে পারি না। সাধারণত প্যাডিং বাম মানে উপাদানটির বাম অংশ।
মোহাম্মদ ইব্রাহিম

13

সহজ সমাধান, এই লাইনটি চেকবক্স বৈশিষ্ট্যে যুক্ত করুন, আপনার পছন্দসই ব্যবধানের মান দিয়ে 10dp প্রতিস্থাপন করুন

android:paddingLeft="10dp"

10

আমি বলছি না, কিন্তু আমি পরীক্ষা

<CheckBox android:paddingLeft="8mm" এবং কেবল পাঠ্যটি ডানদিকে সরিয়ে দেয়, পুরো নিয়ন্ত্রণ নয়।

এটা আমার জন্য ভাল।


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

আমি এটি ২.৩.৩ থেকে ৪.২-এর মধ্যে আলাদাভাবে আচরণ করে দেখছি (পরিবর্তনটি কোথায় ঘটেছে তা নিশ্চিত নয়)।
নট

আপনার মানে ডিপি মিমি না?
ক্রিসপিক্স

10

পরিবর্তে আরও ভাল প্যাডিংয়ের জন্য কেন কেবল অ্যান্ড্রয়েড চেকবক্সকে প্রসারিত করবেন না। প্রতিবার আপনি চেকবক্স ব্যবহার করার সময় কোডে এটি ঠিক করার পরিবর্তে আপনি কেবলমাত্র পরিবর্তিত চেকবক্স ব্যবহার করতে পারেন।

প্রথমে চেকবক্স প্রসারিত করুন:

package com.whatever;

import android.content.Context;
import android.util.AttributeSet;
import android.widget.CheckBox;

/**
 * This extends the Android CheckBox to add some more padding so the text is not on top of the
 * CheckBox.
 */
public class CheckBoxWithPaddingFix extends CheckBox {

    public CheckBoxWithPaddingFix(Context context) {
        super(context);
    }

    public CheckBoxWithPaddingFix(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
    }

    public CheckBoxWithPaddingFix(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    @Override
    public int getCompoundPaddingLeft() {
        final float scale = this.getResources().getDisplayMetrics().density;
        return (super.getCompoundPaddingLeft() + (int) (10.0f * scale + 0.5f));
    }
}

সাধারণ চেকবক্স তৈরি করার পরিবর্তে আপনার এক্সএমএল দ্বিতীয়টি আপনার বর্ধিত একটি তৈরি করুন

<com.whatever.CheckBoxWithPaddingFix
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Hello there" />

2
এটি করা এড়াতে আপনার একটি 'যদি' যুক্ত করা উচিত তবে ওএস> ৪.২ কারণ জেলি বিনে তারা এটি "স্থির" করেছেন।
মার্টিন মার্ককোসিনি

1
আসলে> = 4.2 (17)।
আলেক্স এন।

6

আমি স্রেফ এই বিষয়ে সিদ্ধান্ত নিয়েছি:

চেকবক্সকে ওভাররাইড করুন এবং আপনার যদি কাস্টম আঁকতে সক্ষম হয় তবে এই পদ্ধতিটি যুক্ত করুন:

@Override
public int getCompoundPaddingLeft() {

    // Workarround for version codes < Jelly bean 4.2
    // The system does not apply the same padding. Explantion:
    // http://stackoverflow.com/questions/4037795/android-spacing-between-checkbox-and-text/4038195#4038195

    int compoundPaddingLeft = super.getCompoundPaddingLeft();

    if (Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN_MR1) {
        Drawable drawable = getResources().getDrawable( YOUR CUSTOM DRAWABLE );
        return compoundPaddingLeft + (drawable != null ? drawable.getIntrinsicWidth() : 0);
    } else {
        return compoundPaddingLeft;
    }

}

বা এটি যদি আপনি সিস্টেমটিকে আঁকতে সক্ষম ব্যবহার করেন:

@Override
public int getCompoundPaddingLeft() {

    // Workarround for version codes < Jelly bean 4.2
    // The system does not apply the same padding. Explantion:
    // http://stackoverflow.com/questions/4037795/android-spacing-between-checkbox-and-text/4038195#4038195

    int compoundPaddingLeft = super.getCompoundPaddingLeft();

    if (Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN_MR1) {
        final float scale = this.getResources().getDisplayMetrics().density;
        return compoundPaddingLeft + (drawable != null ? (int)(10.0f * scale + 0.5f) : 0);
    } else {
        return compoundPaddingLeft;
    }

}

উত্তর করার জন্য ধন্যবাদ :)


4

এই আচরণটি জেলি বিনে পরিবর্তিত হয়েছে বলে মনে হয়। প্যাডিং লেফট ট্রিকটি অতিরিক্ত প্যাডিং যুক্ত করে, পাঠ্যটিকে খুব ডানদিক দেখায়। আর কেউ খেয়াল করে?


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

4

চেক চিহ্ন এবং পাঠ্য ব্যবহারের মধ্যে স্থানের জন্য:

android:paddingLeft="10dp"

তবে এটি 10 ​​ডিপি-র বেশি হয়ে যায়, কারণ চেক চিহ্নটিতে চারপাশে প্যাডিং রয়েছে (প্রায় 5 ডিপি)। আপনি যদি প্যাডিং অপসারণ করতে চান তবে অ্যান্ড্রয়েড চেকবক্সের চারপাশে কীভাবে প্যাডিং সরাবেন তা দেখুন :

android:paddingLeft="-5dp"
android:layout_marginStart="-5dp"
android:layout_marginLeft="-5dp"
// or android:translationX="-5dp" instead of layout_marginLeft

2
<CheckBox
        android:paddingRight="12dip" />

@ অ্যান্ড্রুকেস - পরীক্ষিত। প্রত্যাশিত হিসাবে, এটি চেকবক্স এবং পাঠ্যের মধ্যে নয়, পুরো নিয়ন্ত্রণে প্যাডিং যুক্ত করে।
ডগডব্লিউ

আলাদা টেক্সটভিউতে আপনি সম্ভবত পাঠ্যটি ভাল রাখবেন।
অ্যান্ড্রু কেএস

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

Bad idea for usabilityনা এইটা না. একটি রৈখিক বিন্যাসে চেকবাক্স এবং পাঠ্যদর্শন উভয়ই রাখুন এবং সেই লিনিয়ারলআউটটিকে স্পর্শযোগ্য করে তুলুন।
ফালমারি

1
-1 এই উত্তরটি প্রশ্নটিতে উত্থাপিত সমস্যাটির সমাধান করে না, যা চিত্র এবং পাঠ্যের মধ্যে ফাঁক সম্পর্কে
ডেভিড লইং

2

যদি আপনার চেকবক্স বা রেডিওবটনগুলির জন্য কাস্টম চিত্র নির্বাচনকারী থাকে তবে আপনাকে অবশ্যই একই বোতাম এবং পটভূমি সম্পত্তি সেট করতে হবে:

            <CheckBox
                android:id="@+id/filter_checkbox_text"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:button="@drawable/selector_checkbox_filter"
                android:background="@drawable/selector_checkbox_filter" />

আপনি ব্যাকগ্রাউন্ড সম্পত্তি সহ আকারের চেকবক্স বা রেডিও বোতাম প্যাডিং নিয়ন্ত্রণ করতে পারেন।


না, আপনাকে এটি করতে হবে না। যদি আপনার একটি কাস্টম ব্যাকগ্রাউন্ড থাকে যা চেকবক্স / রেডিওবটন গ্লাইফ থেকে পৃথক থাকে তবে এটি গ্রহণযোগ্য নয়।
আন্ডার

2

কেবলমাত্র আপনার এক্সএমএল ফাইলে একটি প্যারামিটার থাকতে হবে

android:paddingLeft="20dp"

2

মিনিটহাইট এবং মিনিট প্রস্থকে সেট করা 0dpআমার জন্য অ্যান্ড্রয়েড 9 এপিআই 28 এ সবচেয়ে পরিষ্কার এবং দিকনির্দেশনা সমাধান ছিল:

<CheckBox
        android:id="@+id/checkbox"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:minHeight="0dp"
        android:minWidth="0dp" />

1

আপনি যদি কাস্টম বোতাম তৈরি করছেন, যেমন চেকবক্স টিউটোরিয়ালটির চেহারা পরিবর্তন দেখুন

তারপরে চিত্রের কেন্দ্রে স্বচ্ছ পিক্সেলের আরও একটি বা দুটি কলাম যুক্ত করে বিটিএন_চেক_লাবেল_ব্যাকগ্রাউন্ড .9.png প্রস্থটি কেবল বাড়িয়ে দিন; 9-প্যাচ চিহ্নিতকারীদের যেমন রয়েছে তেমন ছেড়ে দিন।


1

আমি কি একটা হচ্ছে না TextViewএবং CheckBoxএকটি (আপেক্ষিক) ভিতরে LayoutTextViewপ্রদর্শন টেক্সট যে আমি ব্যবহারকারী দেখুক করতে চান, এবং CheckBoxকোনো টেক্সট নেই। এইভাবে, আমি CheckBoxযেখানেই চাই সেখানে অবস্থান / প্যাডিং সেট করতে পারি।


1

গ্যালাক্সি এস 3 মিনি (অ্যান্ড্রয়েড 4.1.2) নিয়ে আমার একই সমস্যা ছিল এবং আমি আমার কাস্টম চেকবক্সটিকে চেকবক্সের পরিবর্তে অ্যাপকম্প্যাটচেকবক্স প্রসারিত করেছিলাম। এখন এটি পুরোপুরি কাজ করে।


0

এই আকারে আপনার প্যাডিং যুক্ত করার জন্য আপনি যে চিত্রটি ব্যবহার করছেন সেটি আকারের প্রয়োজন। অ্যানড্রয়েড ইন্টার্নালগুলিতে, তারা আপনার এসআরসি-তে নির্দিষ্টভাবে আঁকতে সক্ষম হয় এবং এর আকারটি পরে ব্যবহার করে। যেহেতু এটি একটি ব্যক্তিগত পরিবর্তনশীল এবং কোনও গেটর নেই আপনি এটিতে অ্যাক্সেস করতে পারবেন না। এছাড়াও আপনি com.android.intern.R.styleable.CompoundButton এবং সেখান থেকে অঙ্কনযোগ্য পেতে পারেন না।

সুতরাং আপনার নিজের স্টাইলযোগ্য (যেমন কাস্টম_এসসিআর) তৈরি করতে হবে বা আপনি এটি সরাসরি রেডিওবাটন বাস্তবায়নে যুক্ত করতে পারেন:

public class CustomRadioButton extends RadioButton {

    private Drawable mButtonDrawable = null;

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

    public CustomRadioButton(Context context, AttributeSet attrs) {
        this(context, attrs, 0);
    }

    public CustomRadioButton(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
        mButtonDrawable = context.getResources().getDrawable(R.drawable.rbtn_green);
        setButtonDrawable(mButtonDrawable);
    }

    @Override
    public int getCompoundPaddingLeft() {
        if (Util.getAPILevel() <= Build.VERSION_CODES.JELLY_BEAN_MR1) {
            if (drawable != null) {
                paddingLeft += drawable.getIntrinsicWidth();
            }
        }
        return paddingLeft;
    }
}

0

আপনি সম্ভবত আপনার android:buttonসম্পত্তির জন্য একটি অঙ্কনযোগ্য নির্বাচক ব্যবহার করার জন্য আপনাকে যুক্ত করতে android:constantSize="true"এবং / অথবা এর মতো একটি ডিফল্ট অঙ্কনযোগ্য নির্দিষ্ট করতে হবে :

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" android:constantSize="true">
  <item android:drawable="@drawable/check_on" android:state_checked="true"/>
  <item android:drawable="@drawable/check_off"/>
</selector>

এর পরে আপনাকে android:paddingLeftআপনার চেকবক্সের এক্সএমএলে বিশিষ্টতা নির্দিষ্ট করতে হবে ।

কনস:

লেআউট এডিটরটিতে আপনি এপিআই 16 এবং নীচে চেকবক্সের অধীনে থাকা পাঠ্যটি সেক্ষেত্রে প্রস্তাবিত মতো কাস্টম চেকবক্স ক্লাস তৈরি করে এটি ঠিক করতে পারবেন তবে এপিআই স্তর 16 এর জন্য।

নীতি:

StateListDrawable#getIntrinsicWidth()কলটি অভ্যন্তরীণভাবে ব্যবহৃত হওয়ায় এটি একটি বাগ CompoundButtonbut তবে < 0কোনও বর্তমান অবস্থা না থাকলে এবং কোনও ধ্রুবক আকার ব্যবহার না করা হলে এটি মান ফিরে আসতে পারে ।


0

সমস্ত এই সমস্যা কাটিয়ে ওঠার জন্য যা করতে হবে তা যোগ হয় android:singleLine="true"থেকে checkBoxআপনার Android XML লেআউট:

<CheckBox 
   android:id="@+id/your_check_box"
   android:layout_width="match_parent"
   android:layout_height="wrap_content"
   android:singleLine="true"
   android:background="@android:color/transparent"
   android:text="@string/your_string"/>

এবং বিশেষ কিছু প্রোগ্রামক্রমে যোগ করা হবে না।


0

নির্বাচকের কাছ থেকে আমি আমার নিজস্ব অঙ্কনযোগ্য ব্যবহার করার সময় চেকবক্সের চিত্রটি ওভারল্যাপিং করছিল, আমি নীচের কোড ব্যবহার করে এটি সমাধান করেছি:

CheckBox cb = new CheckBox(mActivity);
cb.setText("Hi");
cb.setButtonDrawable(R.drawable.check_box_selector);
cb.setChecked(true);
cb.setPadding(cb.getPaddingLeft(), padding, padding, padding);

অ্যালেক্স সেমেনিয়ুককে ধন্যবাদ


0

আমি ইমেজ পরিবর্তন করে এই সমস্যাটি শেষ করছি। Png ফাইলগুলিতে সবেমাত্র অতিরিক্ত স্বচ্ছ পটভূমি যুক্ত করা হয়েছে। এই সমাধানটি সমস্ত API এ দুর্দান্ত কাজ করে।


0

হতে পারে দেরি হতে পারে তবে আমি এই সমস্যাটি পরিচালনা করতে ইউটিলিটি পদ্ধতি তৈরি করেছি।

আপনার ব্যবহারগুলিতে কেবল এই পদ্ধতিগুলি যুক্ত করুন:

public static void setCheckBoxOffset(@NonNull  CheckBox checkBox, @DimenRes int offsetRes) {
    float offset = checkBox.getResources().getDimension(offsetRes);
    setCheckBoxOffsetPx(checkBox, offset);
}

public static void setCheckBoxOffsetPx(@NonNull CheckBox checkBox, float offsetInPx) {
    int leftPadding;
    if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.JELLY_BEAN) {
        leftPadding = checkBox.getPaddingLeft() + (int) (offsetInPx + 0.5f);
    } else {
        leftPadding = (int) (offsetInPx + 0.5f);
    }
    checkBox.setPadding(leftPadding,
            checkBox.getPaddingTop(),
            checkBox.getPaddingRight(),
            checkBox.getPaddingBottom());
}

এবং এটির মতো ব্যবহার করুন:

    ViewUtils.setCheckBoxOffset(mAgreeTerms, R.dimen.space_medium);

বা এই মত:

    // Be careful with this usage, because it sets padding in pixels, not in dp!
    ViewUtils.setCheckBoxOffsetPx(mAgreeTerms, 100f);

-1

চেকবক্সের জন্য পাঠ্যটি সামঞ্জস্য করার পরিবর্তে, আমি নিম্নলিখিত জিনিসগুলি করেছি এবং এটি সমস্ত ডিভাইসের জন্য আমার পক্ষে কাজ করেছে। 1) এক্সএমএলে, চেকবক্স এবং একের পর এক সংলগ্ন একটি পাঠ্যদর্শন যুক্ত করুন; কিছুটা দূরে রাখা 2) চেকবাক্স পাঠ্যের আকার 0sp এ সেট করুন। 3) চেকবাক্সের পাশের সেই পাঠ্যদর্শনটিতে আপেক্ষিক পাঠ্য যুক্ত করুন।


-3

<CheckBox android:drawablePadding="16dip" - অঙ্কনযোগ্য এবং পাঠ্যের মধ্যে প্যাডিং।

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