প্রোগ্রামিয়ালি টেক্সটভিউতে বাম অঙ্কনযোগ্য সেট করে


285

আমার এখানে এক্সএমএলে একটি পাঠ্যদর্শন রয়েছে।

<TextView
        android:id="@+id/bookTitle"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:drawableLeft="@drawable/checkmark"
        android:gravity="center_vertical"
        android:textStyle="bold"
        android:textSize="24dip"
        android:maxLines="1"
        android:ellipsize="end"/>

আপনি দেখতে পাচ্ছেন যে আমি এক্সএমএলে ড্রইবল লেফট সেট করেছি।

আমি কোডে অঙ্কনযোগ্য পরিবর্তন করতে চাই।

এটি করার বিষয়ে কি এখনও চলছে? বা পাঠ্য দেখার জন্য কোডে অঙ্কনযোগ্য বামটি সেট করছেন?

উত্তর:


781

আপনি সেট কম্বাউন্ডড্রেইবলগুলিউইথ ইন্ট্রিনসিকবাউন্ডস (ইন বাম, ইনট শীর্ষ, ইন্ট ডান, ইনট নীচে) ব্যবহার করতে পারেন

0 সেট করুন যেখানে আপনি চিত্রগুলি চান না

বাম দিকে অঙ্কনযোগ্য উদাহরণ:

TextView textView = (TextView) findViewById(R.id.myTxtView);
textView.setCompoundDrawablesWithIntrinsicBounds(R.drawable.icon, 0, 0, 0);

টিপ: আপনি যখনই কোনও এক্সএমএল বৈশিষ্ট্য জানেন তবে রানটাইমে কীভাবে এটি ব্যবহার করবেন সে সম্পর্কে কোনও ধারণা নেই। কেবল বিকাশকারী দস্তাবেজে সেই সম্পত্তিটির বিবরণে যান। এটি রানটাইমে সমর্থিত হলে সেখানে সম্পর্কিত পদ্ধতিগুলি খুঁজে পাবেন । অর্থাত জন্য DrawableLeft


সুতরাং যেখানে আমি এই পদ্ধতিতে অঙ্কনযোগ্য সেট করব?
কোডার_ফোর_লাইফ 22

1
+1 এটি অ্যান্ড্রয়েড সেট করার জন্য কাজ করছে: পাঠ্য ভিউয়ের জন্য অঙ্কনযোগ্য বামটি কর্মসূচীরূপে। থ্যাঙ্কস সাথী
পরেশ মায়ানী

35
টিপ যোগ করার জন্য +1।
ডকসটি

@ ব্রেনক্র্যাশ আপনি ঠিক বলেছেন, আমি এটি নতুন নামটির সাথে একই নামটি দিয়ে ভুল করেছি।
ডিএথেম্পারার

2
হ্যালো আমি অঙ্কনযোগ্যগুলি সেট করতে এই পদ্ধতিটি ব্যবহার করছিলাম, তবে আমি এর গেটের কাউন্টার অংশটি খুঁজে পেলাম না। যৌগিক পাঠ্যদর্শনটিতে কিছু আঁকতে সক্ষম কিনা তা আমাকে পরীক্ষা করে দেখতে হয়েছিল। আমি কেমন করে ঐটি করি? সাথে তুলনা textview.getCompoundDrawablesRelative()[0]করার চেষ্টা করা হয়েছেmContext.getResources().getDrawable(R.drawable.my_drawable)
রবি


6

টেক্সটভিউতে অঙ্কনযোগ্য সেট করার জন্য আপনি নীচের যে কোনও পদ্ধতি ব্যবহার করতে পারেন:

1- কম্পাউন্ডড্রোয়েবলসইথ ইন্ট্রিন্সিকবাউন্ডস (ইনট, ইনট, ইনট, ইনট)

2- সেট কম্পাউন্ডড্রাব্যাবলস (বাম_ড্রেব্যাবল, শীর্ষ_ড্রেব্যাবল, ডান_ড্রেব্যাবল, নীচে_ড্রেব্যাবল)

এবং উত্স থেকে আকর্ষণীয় পেতে আপনি ব্যবহার করতে পারেন:

getResources().getDrawable(R.drawable.your_drawable_id);

না, সেটম্পাউন্ডড্রাউয়েবলস উইথ ইন্ট্রিন্সিকবাউন্ডস (ইনট, ইনট, ইনট, ইনট) আপনার নিজের লিঙ্ক থেকে এপিআই লেভেট 3 ...
ব্রেইনক্র্যাশ

1

কোটলিন ব্যবহার:

আপনি একটি এক্সটেনশন ফাংশন তৈরি করতে পারেন বা কেবল setCompoundDrawablesWithIntrinsicBoundsসরাসরি ব্যবহার করতে পারেন ।

fun TextView.leftDrawable(@DrawableRes id: Int = 0) {
   this.setCompoundDrawablesWithIntrinsicBounds(id, 0, 0, 0)
}

আপনার যদি অঙ্কনযোগ্যকে পুনরায় আকার দেওয়ার দরকার হয় তবে আপনি এই এক্সটেনশন ফাংশনটি ব্যবহার করতে পারেন।

textView.leftDrawable(R.drawable.my_icon, R.dimen.icon_size)

fun TextView.leftDrawable(@DrawableRes id: Int = 0, @DimenRes sizeRes: Int) {
    val drawable = ContextCompat.getDrawable(context, id)
    val size = resources.getDimensionPixelSize(sizeRes)
    drawable?.setBounds(0, 0, size, size)
    this.setCompoundDrawables(drawable, null, null, null)
}

সত্যই অভিনব হতে, একটি মোড়ক তৈরি করুন যা আকার এবং / অথবা রঙ পরিবর্তনের অনুমতি দেয়।

textView.leftDrawable(R.drawable.my_icon, colorRes = R.color.white)

fun TextView.leftDrawable(@DrawableRes id: Int = 0, @DimenRes sizeRes: Int = 0, @ColorInt color: Int = 0, @ColorRes colorRes: Int = 0) {
    val drawable = drawable(id)
    if (sizeRes != 0) {
        val size = resources.getDimensionPixelSize(sizeRes)
        drawable?.setBounds(0, 0, size, size)
    }
    if (color != 0) {
        drawable?.setColorFilter(color, PorterDuff.Mode.SRC_ATOP)
    } else if (colorRes != 0) {
        val colorInt = ContextCompat.getColor(context, colorRes)
        drawable?.setColorFilter(colorInt, PorterDuff.Mode.SRC_ATOP)
    }
    this.setCompoundDrawables(drawable, null, null, null)
}

0

একটি কোটলিন এক্সটেনশন + অঙ্কনযোগ্য কিছু প্যাডিং

fun TextView.addDrawable(drawable: Int) {
val imgDrawable = ContextCompat.getDrawable(context, drawable)
compoundDrawablePadding = 32
setCompoundDrawablesWithIntrinsicBounds(imgDrawable, null, null, null)
}

0

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

  android:drawableLeft="@drawable/cloud_up"
    android:drawablePadding="5sp"

এখন আপনার যদি আইকনগুলিকে পরিবর্তনশীল পরিবর্তন করতে হয় তবে আপনি ইভেন্টের উপর ভিত্তি করে আইকনগুলি কল করে এটি করতে পারেন

       textViewContext.setText("File Uploaded");
textViewContext.setCompoundDrawablesWithIntrinsicBounds(R.drawable.uploaded, 0, 0, 0);

-8
static private Drawable **scaleDrawable**(Drawable drawable, int width, int height) {

    int wi = drawable.getIntrinsicWidth();
    int hi = drawable.getIntrinsicHeight();
    int dimDiff = Math.abs(wi - width) - Math.abs(hi - height);
    float scale = (dimDiff > 0) ? width / (float)wi : height /
            (float)hi;
    Rect bounds = new Rect(0, 0, (int)(scale * wi), (int)(scale * hi));
    drawable.setBounds(bounds);
    return drawable;
}

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