আমি চেকবক্সকে কিছুটা ছোট / বড় করতে চাই, আমি এটি কীভাবে করব?
উত্তর:
আপনাকে কেবল সম্পর্কিত অঙ্কনগুলি সেট করতে হবে এবং সেগুলি চেকবক্সে সেট করতে হবে:
<CheckBox
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="new checkbox"
android:background="@drawable/my_checkbox_background"
android:button="@drawable/my_checkbox" />
কৌশলটি কীভাবে অঙ্কনযোগ্যকে সেট করতে হবে সে সম্পর্কে। এটি সম্পর্কে একটি ভাল টিউটোরিয়াল এখানে ।
এপিআই লেভেল 11 দিয়ে শুরু করে আরও একটি পদ্ধতির উপস্থিতি রয়েছে:
<CheckBox
...
android:scaleX="0.70"
android:scaleY="0.70"
/>
এখানে একটি আরও ভাল সমাধান দেওয়া হয়েছে যা ক্লিপটি এবং / অথবা আঁকতে সক্ষমকে অস্পষ্ট করে না, তবে কেবলমাত্র তখনই কাজ করে যদি চেকবক্সে নিজেই পাঠ্য না থাকে (তবে আপনি এখনও পাঠ্য রাখতে পারেন, এটি আরও জটিল, শেষটি দেখুন)।
<CheckBox
android:id="@+id/item_switch"
android:layout_width="160dp" <!-- This is the size you want -->
android:layout_height="160dp"
android:button="@null"
android:background="?android:attr/listChoiceIndicatorMultiple"/>
ফলাফল:
কি আগের সমাধান scaleX
এবং scaleY
মতো লাগছিল:
আপনার TextView
পাশে একটি পাঠ্য যোগ করে এবং প্যারেন্ট লেআউটে ক্লিক শ্রোতাদের যুক্ত করে, তারপর চেকবক্সটি প্রোগ্রামিয়্যাটিকভাবে ট্রিগার করে আপনার একটি পাঠ্য চেকবক্স থাকতে পারে ।
ভাল আমি অনেক উত্তর খুঁজে পেয়েছি, কিন্তু যখন আমাদের ইউআই এর মতো চেকবক্সের সাথেও আমাদের পাঠ্যের প্রয়োজন হয় তখন তারা পাঠ্য ছাড়াই ঠিকঠাক কাজ করে
এখানে আমার ইউআই প্রয়োজনীয়তা অনুসারে আমি টেক্সট সাইজ বাড়াতে পারি না তাই আমি চেষ্টা করেছি এমন অন্যান্য বিকল্পটি স্কেলএক্স এবং স্কেলওয়াই (চেক বাক্সটি স্ট্র্যাচ করুন) এবং .png চিত্রগুলির সাথে কাস্টম এক্সএমএল নির্বাচনকারী (এটি বিভিন্ন স্ক্রিনের আকারেও সমস্যা তৈরি করে)
তবে এর জন্য আমাদের আরও একটি সমাধান রয়েছে, তা হ'ল ভেক্টর ড্রয়যোগ্য
এটি 3 পদক্ষেপে করুন।
পদক্ষেপ 1: এই তিনটি ভেক্টর ড্রয়যোগ্য আপনার অঙ্কনযোগ্য ফোল্ডারে অনুলিপি করুন
চেক.এক্সএমএল
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="16dp"
android:height="16dp"
android:viewportHeight="24.0"
android:viewportWidth="24.0">
<path
android:fillColor="#FF000000"
android:pathData="M19,3L5,3c-1.11,0 -2,0.9 -2,2v14c0,1.1 0.89,2 2,2h14c1.11,0 2,-0.9 2,-2L21,5c0,-1.1 -0.89,-2 -2,-2zM10,17l-5,-5 1.41,-1.41L10,14.17l7.59,-7.59L19,8l-9,9z" />
</vector>
un_checked.xML
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="16dp"
android:height="16dp"
android:viewportHeight="24.0"
android:viewportWidth="24.0">
<path
android:fillColor="#FF000000"
android:pathData="M19,5v14H5V5h14m0,-2H5c-1.1,0 -2,0.9 -2,2v14c0,1.1 0.9,2 2,2h14c1.1,0 2,-0.9 2,-2V5c0,-1.1 -0.9,-2 -2,-2z" />
</vector>
( দ্রষ্টব্য আপনি যদি অ্যান্ড্রয়েড স্টুডিওতে কাজ করেন তবে আপনি সেখান থেকে এই ভেক্টর ড্রয়যোগ্যকে যুক্ত করতে পারেন, আপনার আঁকতে সক্ষম ফোল্ডারে রাইট ক্লিক করুন তারপরে নিউ / ভেক্টর অ্যাসেট, তারপরে এগুলি অঙ্কনযোগ্য নির্বাচন করুন )
পদক্ষেপ 2: চেক_বক্সের জন্য এক্সএমএল নির্বাচনকারী তৈরি করুন
check_box_selector.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/checked" android:state_checked="true" />
<item android:drawable="@drawable/un_checked" />
</selector>
পদক্ষেপ 3: চেক বাক্সে যে অঙ্কনযোগ্য সেট করুন
<CheckBox
android:id="@+id/suggectionNeverAskAgainCheckBox"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:button="@drawable/check_box_selector"
android:textColor="#FF000000"
android:textSize="13dp"
android:text=" Never show this alert again" />
এখন এর মত:
আপনি এর প্রস্থ এবং উচ্চতা বা ভিউপোর্ট হাইট এবং ভিউপোর্টউইথ এবং ফিলকলারও পরিবর্তন করতে পারেন
আশা করি এটি সাহায্য করবে!
android:button="@null"
এবং সেট android:background="@drawable/check_box_selector"
করতে হয়েছিল।
আমি ব্যবহার করি
android:scaleX="0.70"
android:scaleY="0.70"
চেকবক্সের আকার সামঞ্জস্য করতে
তারপরে আমি এইভাবে মার্জিন সেট করলাম
android:layout_marginLeft="-10dp"
চেকবাক্সের ths অবস্থান সামঞ্জস্য করতে।
এখানে আমি যা করেছি তা প্রথম সেট:
android:button="@null"
এবং সেট
android:drawableLeft="@drawable/selector_you_defined_for_your_checkbox"
তারপরে আপনার জাভা কোডে:
Drawable d = mCheckBox.getCompoundDrawables()[0];
d.setBounds(0, 0, width_you_prefer, height_you_prefer);
mCheckBox.setCompoundDrawables(d, null, null, null);
এটি আমার পক্ষে কাজ করে এবং আশা করি এটি আপনার পক্ষে কাজ করবে!
আপডেট : এটি কেবল এপিআই 17 থেকে কাজ করে ...
ইতিমধ্যে প্রদত্ত অন্যান্য উজ্জ্বল উত্তরগুলিতে যুক্ত করতে, আপনি কেবলমাত্র পাঠ্য আকারের অনুমতি অনুসারে চেকবক্সটিকে ছোট করতে পারেন।
এই প্রশ্নের আমার উত্তর অনুসারে: - আমরা কীভাবে চেকবক্সের আকার হ্রাস করতে পারি দয়া করে আমাকে একটি ধারণা দিন
CheckBox
চিত্রটির পাশাপাশি এর উচ্চতাটিও পাঠ্য থেকে প্রাপ্ত হয়।
আপনার এক্সএমএলে এই বৈশিষ্ট্যগুলি সেট করুন:
android:text=""
android:textSize="0sp"
অবশ্যই এটি কেবল তখনই কাজ করে যদি আপনি কোনও পাঠ্য চান না (আমার জন্য কাজ করেছেন)।
এই পরিবর্তনগুলি ছাড়াই, CheckBox
জো আমাকে বর্ণিত, আমাকে আমার চিত্রের চারপাশে একটি বড় ব্যবধান দিচ্ছিল
custom checkbox
নীচের বৈশিষ্ট্যগুলিকে Checkbox
আপনার লেআউট ফাইলটিতে সেট করে আকার পরিবর্তন করতে আপনি নীচের সমাধানটি চেষ্টা করতে পারেন । আমার জন্য কাজ করেছেন
অ্যান্ড্রয়েড: স্কেলএক্স = "0.8" অ্যান্ড্রয়েড: স্কেলওয়াই = "0.8"
android:button="@null"
android:scaleX="0.8"
android:scaleY="0.8"
android:background="@drawable/custom_checkbox"
অঙ্কনযোগ্য ফাইলটিতে নিম্নলিখিত লাইনগুলি যুক্ত করুন
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_checked="false"
android:drawable="@drawable/unchecked_img" />
<item android:state_checked="true"
android:drawable="@drawable/checked_img" />
</selector>
আমি নিজের ইমেজ তৈরি না করে এটি করার একটি উপায় খুঁজে পেয়েছি। অন্য কথায়, সিস্টেমের চিত্রটি ছোট করা হচ্ছে। সমাধানটি নিখুঁত বলে আমি ভান করি না; যদি কেউ কয়েকটি পদক্ষেপ ছোট করার কোনও উপায় জানেন তবে কীভাবে তা জানতে পেরে আমি খুশি হব।
প্রথমত, আমি নিম্নলিখিতটি প্রকল্পের প্রধান ক্রিয়াকলাপ শ্রেণিতে রেখেছি (WonActivity)। এটিকে সরাসরি স্ট্যাক ওভারফ্লো থেকে নেওয়া হয়েছিল - ধন্যবাদ ছেলেরা !
/** get the default drawable for the check box */
Drawable getDefaultCheckBoxDrawable()
{
int resID = 0;
if (Build.VERSION.SDK_INT <= 10)
{
// pre-Honeycomb has a different way of setting the CheckBox button drawable
resID = Resources.getSystem().getIdentifier("btn_check", "drawable", "android");
}
else
{
// starting with Honeycomb, retrieve the theme-based indicator as CheckBox button drawable
TypedValue value = new TypedValue();
getApplicationContext().getTheme().resolveAttribute(android.R.attr.listChoiceIndicatorMultiple, value, true);
resID = value.resourceId;
}
return getResources().getDrawable(resID);
}
দ্বিতীয়ত, আমি একটি স্কেল "একটি অঙ্কনযোগ্য" তৈরি করতে created দয়া করে লক্ষ্য করুন যে এটি স্ট্যান্ডার্ড স্ক্র্যাবলযোগ্য থেকে সম্পূর্ণ পৃথক।
import android.graphics.drawable.*;
/** The drawable that scales the contained drawable */
public class ScalingDrawable extends LayerDrawable
{
/** X scale */
float scaleX;
/** Y scale */
float scaleY;
ScalingDrawable(Drawable d, float scaleX, float scaleY)
{
super(new Drawable[] { d });
setScale(scaleX, scaleY);
}
ScalingDrawable(Drawable d, float scale)
{
this(d, scale, scale);
}
/** set the scales */
void setScale(float scaleX, float scaleY)
{
this.scaleX = scaleX;
this.scaleY = scaleY;
}
/** set the scale -- proportional scaling */
void setScale(float scale)
{
setScale(scale, scale);
}
// The following is what I wrote this for!
@Override
public int getIntrinsicWidth()
{
return (int)(super.getIntrinsicWidth() * scaleX);
}
@Override
public int getIntrinsicHeight()
{
return (int)(super.getIntrinsicHeight() * scaleY);
}
}
অবশেষে, আমি একটি চেকবক্স ক্লাস সংজ্ঞায়িত করেছি।
import android.graphics.*;
import android.graphics.drawable.Drawable;
import android.widget.*;
/** A check box that resizes itself */
public class WonCheckBox extends CheckBox
{
/** the check image */
private ScalingDrawable checkImg;
/** original height of the check-box image */
private int origHeight;
/** original padding-left */
private int origPadLeft;
/** height set by the user directly */
private float height;
WonCheckBox()
{
super(WonActivity.W.getApplicationContext());
setBackgroundColor(Color.TRANSPARENT);
// get the original drawable and get its height
Drawable origImg = WonActivity.W.getDefaultCheckBoxDrawable();
origHeight = height = origImg.getIntrinsicHeight();
origPadLeft = getPaddingLeft();
// I tried origImg.mutate(), but that fails on Android 2.1 (NullPointerException)
checkImg = new ScalingDrawable(origImg, 1);
setButtonDrawable(checkImg);
}
/** set checkbox height in pixels directly */
public void setHeight(int height)
{
this.height = height;
float scale = (float)height / origHeight;
checkImg.setScale(scale);
// Make sure the text is not overlapping with the image.
// This is unnecessary on Android 4.2.2, but very important on previous versions.
setPadding((int)(scale * origPadLeft), 0, 0, 0);
// call the checkbox's internal setHeight()
// (may be unnecessary in your case)
super.setHeight(height);
}
}
এটাই. আপনি যদি নিজের দৃষ্টিতে একটি WonCheckBox রেখে এবং সেট হাইট () প্রয়োগ করেন তবে চেক-বাক্স চিত্রটি সঠিক আকারের হবে।
এই কোড ব্যবহার করুন।
বিন্যাসে:
<CheckBox
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:button="@drawable/my_checkbox" *** here
android:checked="true"/>
একটি নতুন অঙ্কনযোগ্য যোগ করুন: my_checkbox.xML
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:state_checked="false"
android:drawable="@drawable/checkbox_off_background"/>
<item
android:state_checked="true"
android:drawable="@drawable/checkbox_on_background"/>
এবং শেষ 2 অঙ্কনযোগ্য তৈরি করুন:
চেকবক্স_অফ_ব্যাকগ্রাউন্ড.এক্সএমএল
<?xml version="1.0" encoding="utf-8"?>
<layer-list
xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape android:shape="rectangle">
<size
android:height="25dp" *** your size
android:width="25dp"/>
</shape>
</item>
<item android:drawable="@android:drawable/checkbox_off_background"/>
এবং খুব, চেকবক্স_অনব্যাকগ্রাউন্ড.এক্সএমএল
<?xml version="1.0" encoding="utf-8"?>
<layer-list
xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape android:shape="rectangle">
<size
android:height="25dp"
android:width="25dp"/>
</shape>
</item>
<item android:drawable="@android:drawable/checkbox_on_background"/>
ধরুন আপনার মূল এক্সএমএলটি হ'ল:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_checked="true"
android:drawable="@drawable/tick_img" />
<item android:state_checked="false"
android:drawable="@drawable/untick_img" />
</selector>
তারপরে android:button="@drawable/xml_above"
আপনার চেকবক্সের এক্সএমএলটি সরিয়ে ফেলুন এবং জাভাতে প্রোগ্রামিকভাবে অঙ্কনযোগ্য স্কেলিং করুন ( 150
আপনার পছন্দসই ডিপি-তে বড় আকার হ্রাস করুন ):
CheckBox tickRememberPasswd = findViewById(R.id.remember_tick);
//custom selector size
Drawable drawableTick = ContextCompat.getDrawable(this, R.drawable.tick_img);
Drawable drawableUntick = ContextCompat.getDrawable(this, R.drawable.untick_img);
Bitmap bitmapTick = null;
if (drawableTick != null && drawableUntick != null) {
int desiredPixels = Math.round(convertDpToPixel(150, this));
bitmapTick = ((BitmapDrawable) drawableTick).getBitmap();
Drawable dTick = new BitmapDrawable(getResources()
, Bitmap.createScaledBitmap(bitmapTick, desiredPixels, desiredPixels, true));
Bitmap bitmapUntick = ((BitmapDrawable) drawableUntick).getBitmap();
Drawable dUntick = new BitmapDrawable(getResources()
, Bitmap.createScaledBitmap(bitmapUntick, desiredPixels, desiredPixels, true));
final StateListDrawable statesTick = new StateListDrawable();
statesTick.addState(new int[] {android.R.attr.state_checked},
dTick);
statesTick.addState(new int[] { }, //else state_checked false
dUntick);
tickRememberPasswd.setButtonDrawable(statesTick);
}
convertDpToPixel
পদ্ধতি:
public static float convertDpToPixel(float dp, Context context) {
Resources resources = context.getResources();
DisplayMetrics metrics = resources.getDisplayMetrics();
float px = dp * (metrics.densityDpi / 160f);
return px;
}
আমার প্রয়োজনীয়তার জন্য প্রাসঙ্গিক উত্তরটি আমি খুঁজে পাইনি যা আমি এটি বের করেছিলাম। সুতরাং, এই উত্তরটি নীচের মতো পাঠ্যের সাথে চেকবাক্সের জন্য যেখানে আপনি চেকবক্সের আঁকারযোগ্য এবং পৃথকভাবে পাঠ্যের আকার পরিবর্তন করতে চান।
আপনার দু'টি পিএনজি প্রয়োজন সিবি_চেকড.পিএনজি এবং সিবি_চেনচেকড.পিএনজি এগুলিকে অঙ্কনযোগ্য ফোল্ডারে যুক্ত করুন
এখন cb_bg_checked.xML তৈরি করুন
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:tools="http://schemas.android.com/tools"
xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/cb_checked"
android:height="22dp" <!-- This is the size of your checkbox -->
android:width="22dp" <!-- This is the size of your checkbox -->
android:right="6dp" <!-- This is the padding between cb and text -->
tools:targetApi="m"
tools:ignore="UnusedAttribute" />
</layer-list>
এবং, cb_bg_unchecked.xML
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools">
<item android:drawable="@drawable/cb_unchechecked"
android:height="22dp" <!-- This is the size of your checkbox -->
android:width="22dp" <!-- This is the size of your checkbox -->
android:right="6dp" <!-- This is the padding between cb and text -->
tools:targetApi="m"
tools:ignore="UnusedAttribute" />
</layer-list>
তারপরে একটি নির্বাচক এক্সএমএল চেকবক্স.এক্সএমএল তৈরি করুন
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/cb_bg_checked" android:state_checked="true"/>
<item android:drawable="@drawable/cb_bg_unchecked" android:state_checked="false"/>
</selector>
এখন এটি আপনার লেআউট.এক্সএমএল সংজ্ঞায়িত করুন
<CheckBox
android:id="@+id/checkbox_with_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:checked="true"
android:button="@drawable/checkbox"
android:text="This is text"
android:textColor="@color/white"
android:textSize="14dp" /> <!-- Here you can resize text -->
আপনি যদি চেকবক্সে একটি কাস্টম চিত্র যুক্ত করতে চান তবে বোতামটি নালায় সেট করুন এবং সমাধান করা চেকবক্সে কেবল ব্যাকগ্রাউন্ড যুক্ত করুন
<CheckBox
android:layout_width="22dp"
android:layout_height="22dp"
android:layout_marginLeft="-10dp"
android:button="@null"
android:background="@drawable/memory_selector"/>