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


184

আমার অ্যান্ড্রয়েড অ্যাপে আমার এই লেআউটটি রয়েছে:

<?xml version="1.0" encoding="utf-8" ?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:orientation="vertical">

    <fragment
         android:id="@+id/map"
         android:layout_width="match_parent"
         android:layout_height="0dp" 
         android:layout_weight="1" 
         class="com.google.android.gms.maps.SupportMapFragment"/>

    <Button
        android:id="@+id/button_back"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:onClick="CloseActivity"
        android:padding="0dp"
        android:text="@+string/back" />

</LinearLayout>

পূর্বরূপ এবং ফোনে দেখে মনে হচ্ছে:

আপনি নীচের অংশের বোতামে দেখতে পাচ্ছেন, সেখানে কিছু প্যাডিং রয়েছে।

আমি কীভাবে এ থেকে মুক্তি পেতে পারি এবং বোতামটি নীচের অংশটি পুরোপুরি পূরণ করতে পারি?


6
ড্যাটারের উত্তর দুটি বছর ধরে সঠিক ছিল। আপনি এটি হিসাবে চিহ্নিত করতে পারেন?
জনিলম্বদা

1
এই প্রশ্নের আরও ভাল শিরোনাম থাকতে সম্পাদনা প্রয়োজন। গুগল অনুসন্ধানে এটি প্রথম ফলাফল হয়ে উঠেছে, যদিও সত্যই এটি প্রশ্নের উত্তর দেয় না।
সফট

উত্তর:


432

আমার জন্য সমস্যাটি কয়েকটি অ্যান্ড্রয়েড থিমের মিনি হাইট এবং মিনিট প্রস্থ হিসাবে পরিণত হয়েছিল।

বোতাম উপাদানটিতে, যোগ করুন:

<Button android:minHeight="0dp" android:minWidth="0dp" ...

বা আপনার বোতামের স্টাইলে:

<item name="android:minHeight">0dp</item>
<item name="android:minWidth">0dp</item>

5
কিছুক্ষণ সময় নিয়েছি যতক্ষণ না বুঝলাম আমি কিছু অদ্ভুত প্যাডিং আচরণ করছি না বরং মিনিহাইটের সাথে আচরণ করছি।
পাইজুসন

7
আমি মনে করি না এই উত্তরটি আসলে আসল প্রশ্নের জবাব দেয়। তবে আমি এখনও আনন্দিত যে আমি এটি পেরিয়ে এসেছি কারণ কেন আমি Buttonএখনও এটি নির্ধারণের পরেও এত বেশি জায়গা নিচ্ছি তা বুঝতে পারি না android:background="@null"। সত্য যে Buttonএর ডিফল্ট শৈলী দায়ী একটি খুব ভাল টিপ।
টনি চ্যান

এটি অ্যান্ড্রয়েড: minHeight = "0dp" অ্যান্ড্রয়েড: minWidth = "0dp" উভয়ই গুরুত্বপূর্ণ, এবং এর মধ্যে একটিও নয়।
রিকার্ডো

এটি গোল নখের কোণটি সরিয়ে দেয় এবং অ্যান্ড্রয়েড নওগ্যাট-এর বোতামটি থেকে রিপল প্রভাবটি ফেলে, কোনও ধারণা কি এই আচরণের কারণ হতে পারে?
rraallvv

এই উত্তরটি গ্রিডলাউটটিতে টেক্সটটিতে অটোসাইজ বিকল্পগুলির সাথে বোতামযুক্ত একটি সমস্যা সমাধান করেছে কারণ আমি সারি / কলামগুলিতে ফিট করার জন্য আরও বোতাম নেওয়ার চেষ্টা করেছি। সরল উত্তর যা আমাকে খুঁজে পেতে দীর্ঘ সময় নিয়েছে ...
মাইক হানাফেই

71

আমার সমাধানটি 0 ইনসেটটপ এবং ইনসেটবোটাম বৈশিষ্ট্যে সেট করা হয়েছিল।

<android.support.design.button.MaterialButton
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:insetTop="0dp"
        android:insetBottom="0dp"
        android:text="@string/view_video"
        android:textColor="@color/white"/>

1
এটিই আমার সমস্যাটিও সমাধান করেছে! ধন্যবাদ!
এসপিএম

46

এটি প্যাডিং নয়, এটি এর পটভূমির বোতামের চারদিকে ছায়া। আপনার নিজস্ব ব্যাকগ্রাউন্ড তৈরি করুন এবং এটি অদৃশ্য হয়ে যাবে।


6
আমি করেছিলাম. অদৃশ্য হয়নি।
হাসান

এর আকার কীভাবে পরিমাপ করা যায়?
ইমান আকবরী

এটিই, @ বিহার, বোতামটির রঙে পটভূমি পরিবর্তন করে
রামন 19

আমি ঠিক বুঝতে পেরেছি যে আমার পটভূমির চিত্রটির স্বচ্ছ প্যাডিং রয়েছে
ফল

22

-veনিম্নোক্ত মত মার্জিনের জন্য মানগুলি ব্যবহারের চেষ্টা করার চেষ্টা করা হতে পারে :

<Button
    android:id="@+id/button_back"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:onClick="CloseActivity"
    android:padding="0dp"
    android:layout_marginLeft="-5dip"
    android:layout_marginRight="-5dip"
    android:layout_marginTop="-5dip"
    android:layout_marginBottom="-5dip"
    android:text="@string/back" />

এটি সেই স্থানটি অদৃশ্য করে দেবে। আমি চাইছি আপনি উপযুক্ত dipমানটি চয়ন করতে পারেন , এটি এটিকে দূরে সরিয়ে দেয়। এটা আমার জন্য কাজ করেছে। আশা করি এটা তোমার জন্য কাজ করবে।


4
আমি এই সমাধানটি ব্যবহার করে সতর্কতা অবলম্বন করব। এটি যা করে তা হ'ল নেতিবাচক মার্জিনগুলি ব্যবহার করে বোতামের পটভূমি (সীমানা + ছায়া) ছড়িয়ে দেওয়া। স্টাইলিং পরিবর্তনগুলি এবং সীমানা + ছায়া কি আরও বেশি 5 ডিপি লাগে? আমি বরং ডিলিয়ান / ক্যাসি মারে দ্রবণটি নিরাপদ দিকে রাখতে ব্যবহার করব।
lenrok258

এছাড়াও, Android এ নেতিবাচক মার্জিনগুলি আনুষ্ঠানিকভাবে সমর্থিত নয় তাই আমিও এটি এড়াতে পারি
টিম কিস্ট

13

টগল বোতামের আশেপাশে প্যাডিং অপসারণের জন্য আমাদের minWidth এবং minHeight 0dp সেট করতে হবে।android:minWidth="0dp" android:minHeight="0dp"

  <ToggleButton
        android:id="@+id/toggle_row_notifications"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:minWidth="0dp"
        android:minHeight="0dp"
        android:layout_alignParentRight="true"
        android:layout_centerVertical="true"
        android:padding="@dimen/_5sdp"
        android:textOn=""
        android:textOff=""
        android:background="@android:color/transparent"
        android:button="@drawable/toggle_selector"
        />

আপনার অঙ্কনীয় ফাইলটিকে বোতামের বৈশিষ্ট্যের মতো সেট করুন: android:button="@drawable/toggle_selector"

নীচে আমার toggle_selecter.xmlফাইল আছে

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

9

আমি অ্যান্ড্রয়েডে নতুন কিন্তু আমারও একই অবস্থা ছিল। @ ডেলিয়ান যা বলেছিলেন তা আমি করেছি এবং এক্সএমএল লেআউট ফাইলটিতে ব্যাকগ্রাউন্ড = "@ নাল" ব্যবহার করেছি।



6

আমারও একই সমস্যা ছিল এবং মনে হচ্ছে এটি বোতামের ব্যাকগ্রাউন্ড রঙের কারণে। ব্যাকগ্রাউন্ডের রঙকে অন্য রঙে পরিবর্তন করার চেষ্টা করুন যেমন:

android:background="@color/colorActive"

এবং দেখুন এটি কার্যকর হয় কিনা। আপনি যদি বোতামটি ব্যবহার করতে চান তবে আপনি একটি শৈলীর সংজ্ঞা দিতে পারেন।


এটি বোতামের হাইলাইট / অ্যানিমেশন ক্ষমতা সরিয়ে দেয়।
আলটাস

4

এটা একটা প্যাডিং কিন্তু বা পটভূমি অঙ্কনযোগ্য ছায়া বা কোন সমস্যা না minHeightএবং minWidth

আপনি যদি এখনও সুন্দর রিপলটি প্রভাবিত করতে চান তবে আপনি নিজের বোতামের স্টাইলটি ব্যবহার করে এটি করতে পারেন ?attr/selectableItemBackground:

<style name="Widget.AppTheme.MyCustomButton" parent="Widget.AppCompat.Button.Borderless">
    <item name="android:minHeight">0dp</item>
    <item name="android:minWidth">0dp</item>
    <item name="android:layout_height">48dp</item>
    <item name="android:background">?attr/selectableItemBackground</item>
</style>

এবং এটি বোতামে প্রয়োগ করুন:

<Button 
    style="@style/Widget.AppTheme.MyCustomButton"
    ... />

4

শীর্ষ এবং নীচে প্যাডিং অপসারণ করতে

<com.google.android.material.button.MaterialButton
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:minHeight="0dp"//to effect the following parameters, this must be added!
        android:insetTop="0dp"
        android:insetBottom="0dp"/>

বাম এবং ডান প্যাডিং অপসারণ করতে

<com.google.android.material.button.MaterialButton
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:minWidth="0dp"//to effect the following parameters, this must be added!
        android:insetLeft="0dp"
        android:insetRight="0dp"/>

2

এটি প্যাডিং, মার্জিন, বা মিনিট হাইট / প্রস্থ বলে মনে হচ্ছে না। android:background="@null"বোতামটি সেট করার ফলে তার স্পর্শ অ্যানিমেশনটি হারাতে থাকে তবে এটি সক্রিয় হয় যে সীমান্তের সমস্ত স্থানে যে কোনও কিছুতে ব্যাকগ্রাউন্ড সেট করা আছে।


আমি বর্তমানে সাথে কাজ করছি:

minSdkVersion 19
targetSdkVersion 23

1

আপনার বোতামটি একটি কাস্টম পটভূমি দিন: @ অঙ্কনযোগ্য / উপাদান_বিটিএন_ ব্লু


0

আপনি এটি দিয়েও করতে পারেন layout_width(height) পরামিতি ।

উদাহরণস্বরূপ, আমি android:layout_height="18dp"কোড সহ শীর্ষ এবং নীচের স্থান মুছে ফেলেছি ।


0

কোনও স্ট্যান্ডার্ড বোতামটি পুরো প্রস্থে ব্যবহার করার কথা নয় কারণ এই কারণেই আপনি এটি অনুভব করেন।

পটভূমি

আপনার যদি মেটেরিয়াল ডিজাইন - বাটনের স্টাইলটি দেখে থাকেন তবে দেখতে পাবেন যে একটি বোতামের একটি 48dp উচ্চতা ক্লিকের অঞ্চল রয়েছে, তবে কোনও কারণে উচ্চতার 36dp হিসাবে প্রদর্শিত হবে।

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

সমাধান

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

এই ব্যবহারের ক্ষেত্রে ?selectableItemBackgroundথিমের বৈশিষ্ট্য রয়েছে যা আপনি আপনার ব্যাকগ্রাউন্ডের জন্য ব্যবহার করতে পারেন (বিশেষত তালিকায়)।
এটি একটি প্ল্যাটফর্মের স্ট্যান্ডার্ড রিপল যুক্ত করবে (বা <21 উপর কিছু রঙের রাজ্যের তালিকা) এবং আপনার বর্তমান থিমের রঙগুলি ব্যবহার করবে।

আপনার ব্যবহারের জন্য আপনি কেবল নিম্নলিখিতটি ব্যবহার করতে পারেন:

<Button
    android:id="@+id/sign_in_button"
    style="?android:attr/buttonBarButtonStyle"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="Login"
    android:background="?attr/selectableItemBackground" />
                   <!--  /\ that's all -->

আপনার দৃষ্টিভঙ্গি যদি একমাত্র হয় এবং পুরো স্ক্রিনটি জুড়ে থাকে তবে বিন্যাসের ওজন যুক্ত করার দরকার নেই

আপনার পটভূমিটি দেখতে কেমন হওয়া উচিত সে সম্পর্কে যদি আপনার কিছু আলাদা ধারণা থাকে তবে আপনাকে নিজেরাই একটি কাস্টম আঁকতে সক্ষম তৈরি করতে হবে এবং সেখানে রঙ এবং রাজ্য পরিচালনা করতে হবে।

এই উত্তরটি প্রশ্ন থেকে অনুলিপি করা হয়েছে : অ্যান্ড্রয়েডে বোতামগুলির চারপাশে প্যাডিং (বা মার্জিন?) কীভাবে সরানো যায়?


0

প্রায় একাধিক উত্তর খুঁড়ে ঘন্টা পরে পরিশেষে আমি একটি সমাধান করে একটি ভিন্ন উপাদান ব্যবহার করে না, নিপূণভাবে পাওয়া minHeightবা minWidth, অথবা এমনকি মোড়কে Buttonকাছাকাছি একটি RelativeLayout

<Button
    android:foreground="?attr/selectableItemBackground"
    android:background="@color/whatever" />

এখানকার মূল অবলম্বনটি হ'ল উত্তরের অনেকগুলি উত্তর হিসাবে নির্ধারিত পটভূমির পরিবর্তে অগ্রভাগের সেটিং। ব্যাকগ্রাউন্ডটি নিজেই selectableItemBackgroundপরিবর্তন করা আপনার বোতামের রঙ / পটভূমিতে যে কোনও পরিবর্তনগুলি ওভাররাইট করে।

অগ্রভাগ পরিবর্তন আপনার উভয় বিশ্বের সেরা দেয়: "অদৃশ্য" প্যাডিং থেকে মুক্তি পান এবং আপনার বোতামের নকশা ধরে রাখুন।


0

আপনি ব্যবহার করতে পারেন বর্ডারলেস' মধ্যে শৈলী AppCompatButton নিচের মত। এবং অ্যান্ড্রয়েড ব্যবহার করুন : এর সাথে পটভূমি

শৈলী = "@ শৈলী / Widget.AppCompat.Button.Borderless.Colored"

বাটন কোড

<androidx.appcompat.widget.AppCompatButton
        android:id="@+id/button_visa_next"
        android:background="@color/colorPrimary"
        style="@style/Widget.AppCompat.Button.Borderless.Colored"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_marginTop="@dimen/spacing_normal"
        android:text="@string/next"
        android:textColor="@color/white"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent" />

আউটপুট:

এখানে চিত্র বর্ণনা লিখুন

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