আমি কীভাবে একটি বোতামে অঙ্কনযোগ্য সঙ্কুচিত করতে পারি?


87

আমি কীভাবে একটি বোতামে অঙ্কনযোগ্য ছোট করতে পারি? আইকনটি খুব বড়, বোতামের চেয়ে আসলে বেশি। এই কোডটি আমি ব্যবহার করছি:

    <Button
    android:background="@drawable/red_button"
    android:drawableLeft="@drawable/s_vit"
    android:id="@+id/ButtonTest"
    android:gravity="left|center_vertical" 
    android:text="S-SERIES CALCULATOR"
    android:textColor="@android:color/white"
    android:layout_height="wrap_content"
    android:layout_width="wrap_content"
    android:layout_marginLeft="25dp"
    android:layout_marginRight="25dp"
    android:drawablePadding="10dp">
    </Button>

উপরেরটি এটি দেখতে কেমন হওয়া উচিত, ঠিক এখন এটি দেখতে কম দেখায়।

উপরেরটি এটি দেখতে কেমন হওয়া উচিত, ঠিক এখন এটি দেখতে কম দেখায়।

আমি এটি চেষ্টা করেছি কিন্তু কোনও চিত্র প্রদর্শিত হয়নি। :-(

    Resources res = getResources();
    ScaleDrawable sd = new ScaleDrawable(res.getDrawable(R.drawable.s_vit), 0, 10f, 10f);
    Button btn = (Button) findViewById(R.id.ButtonTest);
    btn.setCompoundDrawables(sd.getDrawable(), null, null, null);

আপনি কী পাচ্ছেন এবং আপনি কী করার চেষ্টা করছেন তার একটি চিত্র আপলোড করা ভাল। ধন্যবাদ
ললিত পপতানি

অঙ্কনযোগ্য আকারের সংজ্ঞা দিতে আপনি নিজের কাস্টম বোতামটি সংজ্ঞায়িত করতে পারেন। আমার উত্তরটি এখানে stackoverflow.com/a/31916731/2308720 দেখুন
ওলেকসান্ডার

আমি জানি এটি ২০১১ সালের ... তবে আমি আসলে ক্যামেরাটি বাটনটির সীমানা
ছাড়িয়ে

উত্তর:


70

আপনার একটি ইমেজবটন ব্যবহার করা উচিত এবং চিত্রটি নির্দিষ্ট করে android:srcসেট android:scaletypeকরা উচিত setfitXY


কোড আকারে অঙ্কনযোগ্য সেট

Drawable drawable = getResources().getDrawable(R.drawable.s_vit);
drawable.setBounds(0, 0, (int)(drawable.getIntrinsicWidth()*0.5), 
                         (int)(drawable.getIntrinsicHeight()*0.5));
ScaleDrawable sd = new ScaleDrawable(drawable, 0, scaleWidth, scaleHeight);
Button btn = findViewbyId(R.id.yourbtnID);
btn.setCompoundDrawables(sd.getDrawable(), null, null, null); //set drawableLeft for example

আপনি যদি কোডটিতে অঙ্কনযোগ্য সেট করেন তবে আপনি বোতামের উচ্চতার উপর ভিত্তি করে এটি আকার পরিবর্তন করতে পারেন এবং তারপরে সেট করতে পারেন।
রনি

এখন চিত্রটি প্রদর্শিত হয় তবে এটির আকার পরিবর্তন হয় না! আমি 0.1f এবং 10f এর মধ্যে মান চেষ্টা করেছি। কোন ধারণা? আপনার সাহায্যের জন্য ধন্যবাদ ...
Reto

এটি ব্যবহার করে দেখুনdrawable.setBounds(0, 0, drawable.getIntrinsicWidth()*0.5, drawable.getIntrinsicHeight()*0.5);
রনি

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

4
স্কেলউইথ এবং স্কেলহাইটের জন্য আমাদের নিজস্ব মান নির্ধারণ করার কথা রয়েছে? এগুলি কি কেবল বর্ণনামূলক?
সামেটসাহিন

90

আমি একটি খুব সহজ এবং কার্যকর এক্সএমএল সমাধান পেয়েছি যার প্রয়োজন নেই ImageButton

নীচের মত আপনার চিত্রের জন্য একটি অঙ্কনীয় ফাইল তৈরি করুন এবং এটির জন্য ব্যবহার করুন android:drawableLeft

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

    <item
    android:id="@+id/half_overlay"
    android:drawable="@drawable/myDrawable"
    android:width="40dp"
    android:height="40dp"
    />

</layer-list>

আপনি ইমেজ আকার android:widthএবং android:heightবৈশিষ্ট্য সঙ্গে সেট করতে পারেন ।

আপনি কমপক্ষে বিভিন্ন স্ক্রিনের জন্য একই আকার পেতে পারেন।

অপূর্ণতাটি হ'ল এটি ঠিক ফিটএক্সওয়াইয়ের মতো নয় যা এক্সের সাথে মাপতে চিত্রের প্রস্থকে স্কেল করবে এবং সেই অনুযায়ী চিত্রের উচ্চতা মাপবে।


9
এটি গ্রহণযোগ্য উত্তর হওয়া উচিত। যদি কেউ ইমেজবটন না চান (যেমন তারা পাঠ্য ইত্যাদি চান) তবে এই উত্তরটি পাঠ্যের সাথে শূন্য কোড সহ একটি বোতামের মধ্যে আকারের চিত্রগুলির জন্য মঞ্জুরি দেয়।
ইস্পাত

4
আমি এটির মতো একটি নতুন অঙ্কনযোগ্য তৈরি করেছিলাম এবং তারপরে android:drawableTopআমি নতুন অঙ্কনীয়কে যুক্ত করেছি। আমি প্রস্থ / উচ্চতার জন্য কোন মান নির্ধারণ করি না কেন, এটি আমাকে ডিফল্ট হিসাবে দেখায়।
ড্রিফটিং 9987

9
ললিপপের নীচে অ্যান্ড্রয়েড সংস্করণগুলির জন্য কাজ করছে বলে মনে হয় না।
জ্যোতমন সিং

32
উচ্চতা, প্রস্থ কেবলমাত্র API স্তরের 23 এবং উচ্চতর ক্ষেত্রে কাজ করে। সমর্থিত নয়
পলক দারজি

আমি সম্মতি জানাই, এটি এখন পর্যন্ত সেরা সমাধান
সেনজো মালিঙ্গা

10

বোতামগুলি তাদের অভ্যন্তরীণ চিত্রগুলিকে পুনরায় আকার দেয় না।

আমার সমাধানে কোড ম্যানিপুলেশন প্রয়োজন হয় না।

এটি টেক্সটভিউ এবং ইমেজভিউ সহ একটি বিন্যাস ব্যবহার করে।

লেআউটের পটভূমিতে লাল 3 ডি আঁকতে হবে।

আপনার অ্যান্ড্রয়েড: স্কেলটাইপ এক্সএমএল বৈশিষ্ট্যটি সংজ্ঞায়িত করতে হতে পারে ।

উদাহরণ:

<LinearLayout
    android:id="@+id/list_item"
    android:layout_width="fill_parent"
    android:layout_height="50dp"
    android:padding="2dp" >

    <ImageView
        android:layout_width="50dp"
        android:layout_height="fill_parent"
        android:src="@drawable/camera" />

    <TextView
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_weight="1"
        android:lines="1"
        android:gravity="center_vertical"
        android:text="Hello - primary" />

</LinearLayout>

বিটিডাব্লু:

  1. বিভিন্ন রেজোলিউশন আইকনগুলিতে গণনা করার ফলে একটি অনির্দেশ্য ইউআই হতে পারে (আইকনটি খুব বড় বা খুব ছোট)
  2. টেক্সটভিউতে পাঠ্য (বোতাম সহ) উপাদানটি পূরণ করে না। এটি একটি অ্যান্ড্রয়েড সমস্যা এবং এটি কীভাবে সমাধান করা যায় তা আমি জানি না।
  3. আপনি এটি অন্তর্ভুক্ত হিসাবে ব্যবহার করতে পারেন।

শুভকামনা


RE: টেক্সটভিউস, আমি যদি ভিউটি যতটা সম্ভব ছোট হতে চাই তবে আমি এর জন্য প্যাডিংটি শূন্যে সেট করি। এটি অন্যথায় একটি ডিফল্ট প্যাডিং বলে মনে হচ্ছে।
উইলিয়াম টি। ম্যালার্ড

6

অভিনব হিসাবে একটি স্কেলড্র্যাবেবল ব্যবহার করুন পরামর্শ দিয়েছেন ।

সমস্যাটি হ'ল অঙ্কনযোগ্যটি তখন প্রদর্শিত হয় না - এটি স্কেলড্র্যাবেবলগুলিতে কিছু প্রকারের বাগ। আপনাকে প্রোগ্রাম্যালি "স্তর" পরিবর্তন করতে হবে। এটি প্রতিটি বোতামের জন্য কাজ করা উচিত:

// Fix level of existing drawables
Drawable[] drawables = myButton.getCompoundDrawables();
for (Drawable d : drawables) if (d != null && d instanceof ScaleDrawable) d.setLevel(1);
myButton.setCompoundDrawables(drawables[0], drawables[1], drawables[2], drawables[3]);

ভাল লাগল আমি মনে করি অদূর ভবিষ্যতে আমি এটি ব্যবহার করবো!
অভিনব

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

কিছু কারণে, আমার উপরের সমাধানটি সমস্ত অ্যান্ড্রয়েড সংস্করণে কাজ করে না।
বুডি

6

আমার ডিপ্লেস্কেলহেল্পার, যা পুরোপুরি কাজ করে:

import android.content.Context;
import android.graphics.Rect;
import android.graphics.drawable.Drawable;
import android.graphics.drawable.ScaleDrawable;
import android.widget.Button;

public class DisplayHelper {

  public static void scaleButtonDrawables(Button btn, double fitFactor) {
        Drawable[] drawables = btn.getCompoundDrawables();

        for (int i = 0; i < drawables.length; i++) {
            if (drawables[i] != null) {
                if (drawables[i] instanceof ScaleDrawable) {
                    drawables[i].setLevel(1);
                }
                drawables[i].setBounds(0, 0, (int) (drawables[i].getIntrinsicWidth() * fitFactor),
                    (int) (drawables[i].getIntrinsicHeight() * fitFactor));
                ScaleDrawable sd = new ScaleDrawable(drawables[i], 0, drawables[i].getIntrinsicWidth(), drawables[i].getIntrinsicHeight());
                if(i == 0) {
                    btn.setCompoundDrawables(sd.getDrawable(), drawables[1], drawables[2], drawables[3]);
                } else if(i == 1) {
                    btn.setCompoundDrawables(drawables[0], sd.getDrawable(), drawables[2], drawables[3]);
                } else if(i == 2) {
                    btn.setCompoundDrawables(drawables[0], drawables[1], sd.getDrawable(), drawables[3]);
                } else {
                    btn.setCompoundDrawables(drawables[0], drawables[1], drawables[2], sd.getDrawable());
                }
            }
        }
    }
}

4

আপনি setBoundsচিত্রের আকার পরিবর্তন করতে "কমপাউন্ড" ড্রয়েবলগুলিতে কল করতে পারেন ।

আপনার বোতামের অঙ্কনযোগ্যটিকে অটোসাইজ করতে এই কোডটি ব্যবহার করে দেখুন:

DroidUtils.scaleButtonDrawables((Button) findViewById(R.id.ButtonTest), 1.0);

এই ফাংশন দ্বারা সংজ্ঞায়িত:

public final class DroidUtils {

    /** scale the Drawables of a button to "fit"
     *  For left and right drawables: height is scaled 
     *  eg. with fitFactor 1 the image has max. the height of the button.
     *  For top and bottom drawables: width is scaled: 
     *  With fitFactor 0.9 the image has max. 90% of the width of the button 
     *  */
    public static void scaleButtonDrawables(Button btn, double fitFactor) {
        Drawable[] drawables = btn.getCompoundDrawables();

        for (int i = 0; i < drawables.length; i++) {
            if (drawables[i] != null) {
                int imgWidth = drawables[i].getIntrinsicWidth();
                int imgHeight = drawables[i].getIntrinsicHeight();
                if ((imgHeight > 0) && (imgWidth > 0)) {    //might be -1
                    float scale;
                    if ((i == 0) || (i == 2)) { //left or right -> scale height
                        scale = (float) (btn.getHeight() * fitFactor) / imgHeight;
                    } else { //top or bottom -> scale width
                        scale = (float) (btn.getWidth() * fitFactor) / imgWidth;                    
                    }
                    if (scale < 1.0) {
                        Rect rect = drawables[i].getBounds();
                        int newWidth = (int)(imgWidth * scale);
                        int newHeight = (int)(imgHeight * scale);
                        rect.left = rect.left + (int)(0.5 * (imgWidth - newWidth)); 
                        rect.top = rect.top + (int)(0.5 * (imgHeight - newHeight));
                        rect.right = rect.left + newWidth;
                        rect.bottom = rect.top + newHeight;
                        drawables[i].setBounds(rect);
                    }
                }
            }
        }
    }
}

সচেতন হন, এটিকে onCreate()কোনও ক্রিয়াকলাপ হিসাবে ডাকা হতে পারে না , কারণ বোতামের উচ্চতা এবং প্রস্থ সেখানে পাওয়া যায় না (এখনও)। এটিকে কল করুন onWindowFocusChanged()বা ফাংশনটি কল করার জন্য এই সমাধানটি ব্যবহার করুন ।

সম্পাদিত:

এই ফাংশনটির প্রথম অবতারটি সঠিকভাবে কাজ করে নি। এটি চিত্রটি স্কেল করতে ব্যবহারকারীর সেভেন code গুলি কোড ব্যবহার করেছে তবে ফিরে আসছেScaleDrawable.getDrawable() করে না বলে মনে হচ্ছে ( করে না)ScaleDrawable আমার )।

পরিবর্তিত কোড setBoundsচিত্রের সীমা সরবরাহ করতে ব্যবহার করে। অ্যান্ড্রয়েড চিত্রটিকে এই সীমানায় ফিট করে।


আপনাকে ধন্যবাদ যে আপনি এটি কল না করতে বলেছেন onCreate()
বাইনারি


1

আমি নীচের মত এটি করছি। এটি ইনপুট চিত্রের বিপরীতে বোতামে একটি 100x100 আকারের চিত্র তৈরি করে।

drawable.bounds = Rect(0,0,100,100)
button.setCompoundDrawables(drawable, null, null, null)

ScaleDrawableকোনটিই ব্যবহার করছে না। button.setCompoundDrawablesRelativeWithIntrinsicBounds()আমার সমস্যার সমাধান না করা , কারণ এটি সবেমাত্র সীমাবদ্ধতার পরিবর্তে অভ্যন্তরীণ সীমানা (উত্স চিত্রের আকার) ব্যবহার করে বলে মনে হচ্ছে।


0

আপনি বিভিন্ন আকারের অঙ্কনযোগ্য যা বিভিন্ন স্ক্রিন ঘনত্ব / আকার ইত্যাদির সাথে ব্যবহৃত হয় তা ব্যবহার করতে পারেন যাতে আপনার চিত্রটি সমস্ত ডিভাইসে সঠিক দেখা যায়।

এখানে দেখুন: http://developer.android.com/guide/practices/screens_support.html# সমর্থন


আমি একই জায়গায় বিভিন্ন জায়গায় ব্যবহার করি। এই কারণেই আমি এটির আকার পরিবর্তন করতে পারি না, এটি আমার আকারে প্রদর্শিত হবে should
রেটো

0

আপনি কী নিজের চিত্রটি স্কেলড্রাব্যাবলের মধ্যে মোড়ানো এবং তারপরে আপনার বোতামটিতে ব্যবহার করার চেষ্টা করেছেন?


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

আমারও একই সমস্যা ছিল। ScaleDrawableনিখুঁত হবে, কিন্তু এটি সহজভাবে কাজ করে না। এটি "স্তরের" সাথে কিছু করার আছে বলে মনে হচ্ছে। আরো তথ্য এখানে (এবং কিছু সমাধান নীচে উপস্থিত যে নিখুঁত কম): stackoverflow.com/questions/5507539/...
zeh

(সম্পাদনা) কিছু জেনেরিক কোড দিয়ে এটি স্থির! : সমাধান এখানে এখনো ব্যবহার ScaleDrawables আপনি করতে পারবেন যে stackoverflow.com/a/13706836/439026
zeh

0

এখানে আমি ভ্যাক্টর ড্রয়যোগ্যদের স্কেলিংয়ের জন্য যে ফাংশনটি তৈরি করেছি। আমি এটি টেক্সটভিউ যৌগিক অঙ্কনযোগ্য সেট করার জন্য ব্যবহার করেছি।

/**
 * Used to load vector drawable and set it's size to intrinsic values
 *
 * @param context Reference to {@link Context}
 * @param resId   Vector image resource id
 * @param tint    If not 0 - colour resource to tint the drawable with.
 * @param newWidth If not 0 then set the drawable's width to this value and scale 
 *                 height accordingly.
 * @return On success a reference to a vector drawable
 */
@Nullable
public static Drawable getVectorDrawable(@NonNull Context context,
                                         @DrawableRes int resId,
                                         @ColorRes int tint,
                                         float newWidth)
{
    VectorDrawableCompat drawableCompat =
            VectorDrawableCompat.create(context.getResources(), resId, context.getTheme());
    if (drawableCompat != null)
    {
        if (tint != 0)
        {
            drawableCompat.setTint(ResourcesCompat.getColor(context.getResources(), tint, context.getTheme()));
        }

        drawableCompat.setBounds(0, 0, drawableCompat.getIntrinsicWidth(), drawableCompat.getIntrinsicHeight());

        if (newWidth != 0.0)
        {
            float scale = newWidth / drawableCompat.getIntrinsicWidth();
            float height = scale * drawableCompat.getIntrinsicHeight();
            ScaleDrawable scaledDrawable = new ScaleDrawable(drawableCompat, Gravity.CENTER, 1.0f, 1.0f);
            scaledDrawable.setBounds(0,0, (int) newWidth, (int) height);
            scaledDrawable.setLevel(10000);
            return scaledDrawable;
        }
    }
    return drawableCompat;
}

0
  • "ব্যাচ ড্র্যাবল ইম্পোর্ট" বৈশিষ্ট্যটি ব্যবহার করে আপনি প্রয়োজনীয়তার উপর নির্ভর করে কাস্টম আকার আমদানি করতে পারেন উদাহরণস্বরূপ 20 ডিপি * 20 ডিপি

    • এখন আমদানি করার পরে আপনার বোতামটির জন্য অঙ্কনযোগ্য_সোর্স হিসাবে আমদানি করা অঙ্কনযোগ্য_মিজাজ ব্যবহার করুন

    • এটি এভাবে সহজ এখানে চিত্র বর্ণনা লিখুন


তুমি সেখানে কিভাবে গেলে?
অ্যান্ড্রয়েড বিকাশকারী

এটি আমার মনে হয় একটি প্লাগইন। plugins.jetbrains.com/plugin/7658-android-drawable-importer
জিওমিন্ট

0

কারণ আপনি তা করেন নি setLevel। আপনার পরে setLevel(1), এটি আপনার ইচ্ছা হিসাবে প্রদর্শিত হবে


0

কোটলিন এক্সটেনশন ব্যবহার করা হচ্ছে

val drawable = ContextCompat.getDrawable(context, R.drawable.my_icon)
// or resources.getDrawable(R.drawable.my_icon, theme)
val sizePx = 25
drawable?.setBounds(0, 0, sizePx, sizePx)
//                            (left,     top,  right, bottom)
my_button.setCompoundDrawables(drawable, null, null, null)

আমি পুনরায় ব্যবহারের জন্য টেক্সটভিউতে ( বোতাম এটি প্রসারিত করে ) একটি এক্সটেনশন ফাংশন তৈরি করার পরামর্শ দিচ্ছি ।

button.leftDrawable(R.drawable.my_icon, 25)

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

প্রশ্নটি টেক্সটভিউ নয়, বাটন সম্পর্কে ছিল।
ফিরজেন

4
আপনার উত্তরটি পড়া উচিত ছিল। একটি বোতাম টেক্সটভিউ প্রসারিত করে, যাতে আপনি এটি উভয়ের জন্য ব্যবহার করতে পারেন। বা এক্সটেনশনটি কেবলমাত্র একটি বোতাম প্রসারিত করতে পরিবর্তন করুন
গিবল্ট

-1

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

<RelativeLayout
    android:id="@+id/relativeLayout1"
    android:layout_width="match_parent"
    android:layout_height="48dp" >


    <ImageView
        android:id="@+id/imageView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignTop="@+id/textViewTitle"
        android:layout_alignBottom="@+id/textViewTitle"
        android:src="@drawable/ic_back" />

    <TextView
        android:id="@+id/textViewBack"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBaseline="@+id/textViewTitle"
        android:layout_alignBottom="@+id/textViewTitle"
        android:layout_toRightOf="@+id/imageView1"
        android:text="Back"
        android:textColor="@color/app_red"
        android:textSize="@dimen/title_size" />
</RelativeLayout>

-1

এটি অর্জনের জন্য আমি একটি কাস্টম বোতাম শ্রেণি তৈরি করেছি।

কাস্টমবটন.জভা

public class CustomButton extends android.support.v7.widget.AppCompatButton {

    private Drawable mDrawable;

    public CustomButton(Context context, AttributeSet attrs) {
        super(context, attrs);

        TypedArray a = context.getTheme().obtainStyledAttributes(
                attrs,
                R.styleable.CustomButton,
                0, 0);

        try {
            float mWidth = a.getDimension(R.styleable.CustomButton_drawable_width, 0);
            float mHeight = a.getDimension(R.styleable.CustomButton_drawable_width, 0);

            Drawable[] drawables = this.getCompoundDrawables();
            Drawable[] resizedDrawable = new Drawable[4];

            for (int i = 0; i < drawables.length; i++) {
                if (drawables[i] != null) {
                    mDrawable = drawables[i];
                }
                resizedDrawable[i] = getResizedDrawable(drawables[i], mWidth, mHeight);
            }

            this.setCompoundDrawables(resizedDrawable[0], resizedDrawable[1], resizedDrawable[2], resizedDrawable[3]);
        } finally {
            a.recycle();
        }
    }

    public Drawable getmDrawable() {
        return mDrawable;
    }

    private Drawable getResizedDrawable(Drawable drawable, float mWidth, float mHeight) {
        if (drawable == null) {
            return null;
        }

        try {
            Bitmap bitmap;

            bitmap = Bitmap.createBitmap((int)mWidth, (int)mHeight, Bitmap.Config.ARGB_8888);

            Canvas canvas = new Canvas(bitmap);
            drawable.setBounds(0, 0, canvas.getWidth(), canvas.getHeight());
            drawable.draw(canvas);
            return drawable;
        } catch (OutOfMemoryError e) {
            // Handle the error
            return null;
        }
    }
}

attrs.xML

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <declare-styleable name="CustomButton">
        <attr name="drawable_width" format="dimension" />
        <attr name="drawable_height" format="dimension" />
    </declare-styleable>
</resources>

এক্সএমএল ব্যবহার

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:custom="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.example.MainActivity">

     <com.example.CustomButton
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:drawableTop="@drawable/ic_hero"
            android:text="Avenger"
            custom:drawable_height="10dp"
            custom:drawable_width="10dp" />

</RelativeLayout>

4
আপনি যদি এটির সাথে কিছু করতে যাচ্ছেন না তবে আপনি কেন একটি তৈরি Canvasকরেন getResizedDrawableএবং এতে আঁকেন? পুরো ফাংশনটি কেবল হ্রাস করা যেতে পারে drawable.setBounds(0, 0, mWidth, mHeight)
এ্যান্টিমনিট
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.