অ্যান্ড্রয়েড: অঙ্কনযোগ্য লেফট মার্জিন এবং / অথবা প্যাডিং


381

আমরা যে চিত্রটি দিয়ে যুক্ত করেছি তার জন্য মার্জিন বা প্যাডিং সেট করা সম্ভব android:drawableLeft?

উত্তর:


464

উল্লিখিত সিফাস android:drawablePaddingকেবলমাত্র টেক্সট এবং অঙ্কনযোগ্যগুলির মধ্যে প্যাডিংকে বাধ্য করবে যদি বোতামটি যথেষ্ট ছোট থাকে।

যখন বড় বোতাম আউট পাড়ার আপনি ব্যবহার করতে পারেন android:drawablePaddingসাথে android:paddingLeftএবং android:paddingRightটেক্সট বাধ্য এবং বাটন কেন্দ্রে প্রতি অভ্যন্তরস্থ অঙ্কনযোগ্য করতে। আলাদাভাবে বাম এবং ডান প্যাডিং সামঞ্জস্য করে আপনি বিন্যাসে খুব বিশদ সমন্বয় করতে পারেন।

এখানে টেক্সট এবং আইকনটি ডিফল্টর তুলনায় আরও ঘনিষ্ঠভাবে টানতে প্যাডিং ব্যবহার করার একটি উদাহরণ বোতাম:

<Button android:text="@string/button_label" 
    android:id="@+id/buttonId"
    android:layout_width="160dip"
    android:layout_height="60dip"
    android:layout_gravity="center"
    android:textSize="13dip"
    android:drawableLeft="@drawable/button_icon"
    android:drawablePadding="2dip"
    android:paddingLeft="30dip"
    android:paddingRight="26dip"
    android:singleLine="true"
    android:gravity="center" />  

21
অ্যান্ড্রয়েড: প্যাডিংফিট = "30 ডিপ" অ্যান্ড্রয়েড: প্যাডিংরাইট = "26 ডিপ" এখানে কী!
ইগোরগানাপলস্কি

4
এটি প্রশ্নের সাথে সম্পর্কিত নয়, তবে অ্যান্ড্রয়েড: মাধ্যাকর্ষণ = "কেন্দ্র" টেক্সটটির কেন্দ্রের সাথে টেক্সট প্রান্তিক করে রাখবে!
সিএইচইউসু 2:32

1
যদি আমাদের বাম এবং ডান উভয়ই আঁকতে সক্ষম হয় এবং কেবলমাত্র ডান অঙ্কনযোগ্যকে সামঞ্জস্য করতে হয় ??
nmxprime

আমি কেবল ব্যবহার করি: অ্যান্ড্রয়েড: প্যাডিং লেফট এবং এটি চিত্রের অবস্থান পরিবর্তন করে। android: অঙ্কনযোগ্য প্যাডিং চিত্র এবং পাঠ্যের মধ্যে স্থানের জন্য ব্যবহৃত হয়।
সাহসী

এই কোডের বিষয়টি হ'ল এটি passwordToggleDrawableবাম প্যাডিং ব্যবধানটি বড় হওয়ার কারণ এটি কেবল বাম অঙ্কনযোগ্যকে নির্দিষ্ট লক্ষ্য করতে পারে না।
ফলের

184

টেক্সটভিউয়ের একটি অ্যান্ড্রয়েড রয়েছে: অঙ্কনযোগ্য প্যাডিং সম্পত্তি যা কৌশলটি করা উচিত:

অ্যান্ড্রয়েড drawablePadding

অঙ্কনযোগ্য এবং পাঠ্যের মধ্যে প্যাডিং।

একটি মাত্রিক মান হওয়া আবশ্যক, যা "14.5sp" এর মতো একটি ইউনিটের সাথে সংযুক্ত একটি ভাসমান পয়েন্ট নম্বর। উপলব্ধ ইউনিটগুলি হ'ল: পিএক্স (পিক্সেল), ডিপি (ঘনত্ব-স্বাধীন পিক্সেল), এসপি (পছন্দসই ফন্টের আকারের উপর ভিত্তি করে স্কেল করা পিক্সেল), ইন (ইঞ্চি), মিমি (মিলিমিটার)।

এটি কোনও সংস্থার ("@ [প্যাকেজ:] প্রকার: নাম" আকারে) বা থিমের বৈশিষ্ট্য (আকারে "? [প্যাকেজ:] [টাইপ:] নাম") এর এই জাতীয় মান সহ একটি রেফারেন্সও হতে পারে ।

এটি বিশ্বব্যাপী বৈশিষ্ট্য সংস্থান অঙ্কনযোগ্য প্যাডিংয়ের সাথে মিলে যায়।


61

android:drawablePaddingটেক্সট এবং অঙ্কনযোগ্য এর মধ্যে কেবল প্যাডিং ফাঁক তৈরি করবে যদি বোতামটি 2 টি একসাথে স্কোয়াশ করার পক্ষে যথেষ্ট ছোট হয়। যদি আপনার বোতামটি সম্মিলিত প্রস্থের (অঙ্কনযোগ্য বাম / অঙ্কনযোগ্য রাইটের জন্য) বা উচ্চতার (অঙ্কনযোগ্য / টানা জন্য উপযুক্ত) নীচে বৃহত্তর হয় তবে অঙ্কনযোগ্য প্যাডিং কিছুই করে না।

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


আমার সমস্যা ব্যাখ্যা করার জন্য ধন্যবাদ। আমি বুঝতে পারি নি যে এটি কেবল তখনই ঘটে যখন বোতামটি যথেষ্ট প্রশস্ত হয়
পিটার.বার্তোস

আমি একই সমস্যা আছে। আমার বোতামটি প্রশস্ত তাই অঙ্কনযোগ্য পাঠ্যের খুব কাছে নয়
মিলাদ ফরিদনিয়া

হ্যাঁ, এটি ধন্যবাদ কাজ করেছে
ডেভ ও গ্রেডি

43

হ্যাঁ. নিম্নরূপে অঙ্কনযোগ্য প্যাডিং ব্যবহার করুন ,

<TextView
        android:id="@+id/tvHeader"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Settings and Contents"
        android:drawableLeft="@drawable/icon_success"
        android:drawablePadding="10dp" />

37

আপনার অঙ্কনযোগ্য উত্স। Xml করুন

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_checked="true">
        <inset android:drawable="@drawable/small_m" android:insetLeft="10dp" android:insetTop="10dp" />
    </item>
    <item>
        <inset android:drawable="@drawable/small_p" android:insetLeft="10dp" android:insetTop="10dp" />
    </item>
</selector>

2
@ চূড়ান্ত শিল্পী আমার আঁকারে ইনসেট ব্যবহার করেছে এবং এটি নতুন সংস্করণ ডিভাইসের জন্য দুর্দান্ত কাজ করছে। মানে এটি এসডিকে 16, 17 এ কাজ করছে না তবে এসডিকে 23 তে কাজ করছে there কোনও ধারণা আছে কি?
ভাভিন চৌহান


এই জন্য দুর্দান্ত উত্তর এবং upvote। আপনি আমাকে একটি সমস্যার সমাধান করতে সহায়তা করেছেন যা আমাকে দীর্ঘকাল ধরে বিভ্রান্ত করেছে।
অ্যান্টোনাইফ

34

android:drawablePaddingঅঙ্কনযোগ্য আইকনকে প্যাডিং দেওয়ার সহজতম উপায় তবে আপনি যেমন আঁকুন আইকনটির মতো paddingRightবা সাইডের নির্দিষ্ট প্যাডিং দিতে পারবেন না paddingLeftachieve এটির জন্য আপনাকে এটি খনন করতে হবে achieve আর তুমি প্রয়োগ করেন paddingLeftবা paddingRightকরতে Edittextতারপর এটি প্যাডিং সমগ্র করার স্থাপন করবে Edittextঅঙ্কনযোগ্য আইকন করেন।


12

আপনার সম্পাদনাটির জন্য একটি আকার নির্ধারণ করুন এবং উদাহরণ হিসাবে এটি একটি প্যাডিং দিন

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle" >
    <padding
        android:left="5dp"
        android:right="5dp"
    />
    <solid android:color="#F6F6F6" />
    <stroke
        android:width="1px"
        android:color="#C3C3C3" />

    <corners
        android:bottomLeftRadius="1dp"
        android:bottomRightRadius="1dp"
        android:topLeftRadius="1dp"
        android:topRightRadius="1dp" />
</shape>

এই আকারে সংজ্ঞায়িত প্যাডিং অঙ্কনযোগ্য বামে বা ডানদিকে প্যাডিং দিতে সহায়তা করবে ---------------------- এই চিত্রটি এডিটভিউতে প্রয়োগ করুন

 <EditText
            android:id="@+id/example"
            android:layout_width="fill_parent"
            android:layout_height="36dp"
            android:layout_marginLeft="10dp"
            android:layout_marginRight="10dp"
            android:background="@drawable/shape2"
            android:drawableLeft="@drawable/icon1"
            android:drawablePadding="@dimen/txtDrwblPadding"
            android:ems="10"
         />

ব্যাকগ্রাউন্ড হিসাবে সেই সংজ্ঞায়িত আকারটি ব্যবহার করা আপনার সম্পাদনা পাঠ্যকে কিছু স্টাইল প্লাস মার্জিন অঙ্কনযোগ্য লেফটে দেবে।


12

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

<TextView android:layout_width="match_parent"
    android:padding="5sp"
    android:id="@+id/date"
    android:gravity="center|start"
    android:drawableEnd="@drawable/ic_calendar"
    android:background="@drawable/edit_background"
    android:hint="Not Selected"
    android:drawablePadding="10sp"
    android:paddingStart="10sp"
    android:paddingEnd="10sp"
    android:textColor="@color/black"
    android:layout_height="wrap_content"/>

আপনার "ডিপি" ব্যবহার করা উচিত
মার্ক প্যাজন

11
<TextView
    android:layout_width="wrap_content"
    android:layout_height="32dp"
    android:background="@drawable/a"
    android:drawableLeft="@drawable/concern_black"
    android:gravity="center"
    android:paddingLeft="10dp"
    android:paddingRight="10dp"
    android:drawablePadding="10dp"
    android:text="text"/>

দ্রষ্টব্য: লেআউট_পথটি মোড়ানো_ কনটেন্ট হওয়া দরকার এবং ফাঁক নিয়ন্ত্রণ করতে প্যাডিং লেফ্ট প্যাডিং রাইট অঙ্কনযোগ্য প্যাডিং ব্যবহার করা উচিত। আপনি যদি লেআউট_পথের মান নির্দিষ্ট করেন তবে এটির আইকন এবং পাঠ্যের মধ্যে ফাঁক থাকবে, আমি মনে করি একবার লেআউট_পথকে একটি নির্দিষ্ট মান দিন, প্যাডিং পরিমাপ করবে।


9

আমি আমার উত্তরটিও রিংয়ের মধ্যে ফেলে দেব। আপনি যদি এই প্রোগ্রামটিমেটিকভাবে করতে চান তবে নিম্নলিখিতগুলি করতে পারেন।

final Drawable drawable = ContextCompat.getDrawable(getContext(), R.drawable.somedrawable);
final boolean isLTR = ViewCompat.LAYOUT_DIRECTION_LTR == ViewCompat.getLayoutDirection(this);
final int iconInsetPadding = getResources().getDimensionPixelSize(R.dimen.icon_padding);

final Drawable insetDrawable = new InsetDrawable(drawable, isLTR ? 0 : iconInsetPadding, 0, isLTR ? iconInsetPadding : 0, 0);

এটি অঙ্কনযোগ্য প্রান্তে প্যাডিং যুক্ত করবে যেখানে ফোনটি এলটিআর বা আরটিএলে থাকে তার উপর নির্ভর করে বাম / ডানদিকে নির্ভর করবে।


7

পরিবর্তে সাথে এবং ভিতরে Buttonব্যবহার করুন । শিশু আইটেমগুলিতে পছন্দ করুন এবং ব্যবহার করুন ।LinearLayoutImageViewTextViewImageViewTextViewandroid:duplicateParentState="true"


বাটন ইউআই পুনরুত্পাদন করতে এবং অনক্লিক্লিস্টার () টি বোতামের অংশে স্থানান্তর করতে আপনাকে অবশ্যই ফ্রেমলআউট এবং একটি বোতামের (এবং তাদের নিজস্ব লিনিয়ারলাইউটের ভিতরে চিত্র-ভিউ / পাঠ্যদর্শন) প্রয়োজন হবে
3c71

1
আপনার যদি ইতিমধ্যে টেক্সটভিউতে অঙ্কনযোগ্য প্যাডিং থাকে তবে অতিরিক্ত বিন্যাস কেন ব্যবহার করছেন।
পরিিন্দা রাজাপাকশ

5

আপনি স্তর-তালিকা ব্যবহার বিবেচনা করা উচিত

এর মতো একটি অঙ্কনযোগ্য ফাইল তৈরি করুন, এটি আইকো_ক্যালেন্ডার.এক্সএমএল হিসাবে নাম দিন

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
    <shape android:shape="rectangle">
        <solid android:color="@android:color/transparent"/>
    </shape>
</item>
<item android:right="10dp">
    <bitmap android:gravity="center_vertical|left"
        android:src="@drawable/ic_calendar_16dp"
        android:tint="@color/red"
        />
</item>
</layer-list>

বিন্যাস ফাইলের অধীনে,

<TextView
         android:id="@+id/tvDate"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
         android:drawableLeft="@drawable/ic_calendar"
         android:textColor="@color/colorGrey"
         android:textSize="14sp" 
    />

4

আপনি বোতামের জন্য একটি প্যাডিং ব্যবহার করতে পারেন এবং আপনি অঙ্কনযোগ্য প্যাডিং দিয়ে খেলতে পারেন

 <Button
    style="@style/botonesMenu"
    android:padding="15dp"
    android:drawablePadding="-15dp"
    android:text="@string/actualizarBD"
    android:textAlignment="gravity"
    android:gravity="center"
    android:layout_row="1"
    android:layout_column="0"
    android:drawableTop="@drawable/actualizar"
    android:id="@+id/btnActualizar"
    android:onClick="actualizarBD" />

অ্যান্ড্রয়েডের সাথে আপনার অঙ্কনযোগ্য রাখার ক্ষেত্রে আপনি একটি নির্দিষ্ট প্যাডিং ব্যবহার করতে পারেন: প্যাডিংফিট = "10 ডিপি" বা অ্যান্ড্রয়েড: প্যাডিংবটম = "10 ডিপি" বা অ্যান্ড্রয়েড: প্যাডিং রাইট = "10 ডিপি" বা অ্যান্ড্রয়েড: প্যাডিংটপ = "10 ডিপি"


2

আপনি android:drawableLeft="@drawable/your_icon"বাম দিকে প্রদর্শিত হতে হবে অঙ্কন সেট করতে ব্যবহার করতে পারেন । অঙ্কনযোগ্য একটি প্যাডিং সেট করার জন্য আপনার ব্যবহার করা উচিত android:paddingLeftবা android:paddingRightযথাক্রমে বাম / ডান প্যাডিং সেট করতে।

android:paddingRight="10dp"
android:paddingLeft="20dp"
android:drawableRight="@drawable/ic_app_manager"

1

যদি অঙ্কনযোগ্য রৌসুর আকার ঠিক করা থাকে তবে আপনি এটির মতো করতে পারেন:

<Button
    android:background="@drawable/rounded_button_green"
    style="?android:attr/selectableItemBackground"
    android:layout_height="wrap_content"
    app:layout_widthPercent="70%"
    android:drawableRight="@drawable/ic_clear_black_24dp"
    android:paddingRight="10dp"
    android:paddingLeft="34dp"
    tools:text="example" />

এখানে মূল কীটি হ'ল:

    android:drawableRight="@drawable/ic_clear_black_24dp"
    android:paddingRight="10dp"
    android:paddingLeft="34dp"

এটি হ'ল অঙ্কনযোগ্য সংস্থান এবং প্যাডিংরাইটের আকার প্যাডিং লেফট।

আপনি এই উদাহরণে ফলাফল দেখতে পারেন


1
textView.setCompoundDrawablesWithIntrinsicBounds(AppCompatResources.getDrawable(this,drawable),null,null,null);

addressTitleView.setCompoundDrawablePadding();

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

এটি কেবল পাঠ্য দর্শন নয় যেমন বোতামের জন্য কাজ করে যা প্রারম্ভিক / শেষের ড্রওবলগুলি সেট করতে দেয়
আইএক্সএক্স

1

সবে থেকে রিমেক করুন:

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

    <corners android:radius="40dp"/>

    <solid android:color="@android:color/white"/>

</shape>

প্রতি

<layer-list
        xmlns:android="http://schemas.android.com/apk/res/android">
    <item
            android:right="@dimen/_2dp"
            android:left="@dimen/_2dp"
            android:bottom="@dimen/_2dp"
            android:top="@dimen/_2dp"
            >
        <shape
                xmlns:android="http://schemas.android.com/apk/res/android">

            <corners android:radius="40dp"/>

            <solid android:color="@android:color/white"/>

        </shape>
    </item>

</layer-list>

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