অনুভূমিক লিনিয়ারলআউটে ডান সারিবদ্ধ বোতামটি


130

সংযুক্ত চিত্রটি যদি আপনি তাকান। ডান সারিবদ্ধ হওয়ার জন্য আমার বোতামটি দরকার তবে কোনও কারণে এটি 'মাধ্যাকর্ষণ: ডান' দিয়ে কাজ করছে না ...

অ্যাড বাতিল করুন

এই লেআউটটির জন্য আমার কোডটি এখানে:

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    android:layout_marginTop="35dp">

    <TextView
        android:id="@+id/lblExpenseCancel"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/cancel"
        android:textColor="#404040"
        android:layout_marginLeft="10dp"
        android:textSize="20sp"
        android:layout_marginTop="9dp" />

    <Button
        android:id="@+id/btnAddExpense"
        android:layout_width="wrap_content"
        android:layout_height="45dp"
        android:background="@drawable/stitch_button"
        android:layout_marginLeft="10dp"
        android:text="@string/add"
        android:layout_gravity="right"
        android:layout_marginRight="15dp" />

</LinearLayout>

কেন কাজ হচ্ছে না ?!


6
এই ক্ষেত্রে আপেক্ষিক বিন্যাস চেষ্টা করুন। এলএল
অভ্যাস করবে না

4
আপনি যদি লিনিয়ারলআউট ব্যবহার করতে চান তবে দুটি অভ্যন্তরীণ রৈখিক লেআলআউটআউট ব্যবহার করুন এবং বিন্যাস_গ্রাভিটির সাথে লেআউট_ ওয়েট ব্যবহার করুন। এটা ঠিক কাজ করবে।
বংশী চালা

@ ভামসিচাল্লা এটির সাথেই সম্ভব, নীচে আমার নতুন উত্তরটি পরীক্ষা করুন।
TWiStErRob

উত্তর:


137

তার জন্য কোড নীচে ব্যবহার করুন

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_marginTop="35dp"
    android:orientation="horizontal" >

    <TextView
        android:id="@+id/lblExpenseCancel"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="10dp"
        android:layout_marginTop="9dp"
        android:text="@string/cancel"
        android:textColor="#404040"
        android:textSize="20sp" />

    <Button
        android:id="@+id/btnAddExpense"
        android:layout_width="wrap_content"
        android:layout_height="45dp"
        android:layout_alignParentRight="true"
        android:layout_marginLeft="10dp"
        android:layout_marginRight="15dp"
        android:background="@drawable/stitch_button"
        android:text="@string/add" />

</RelativeLayout>

3
দেখে মনে হচ্ছে 'লেআউট_লাইন্পেন্টারাইট রাইট' নামক বৈশিষ্ট্যটি এই ক্ষেত্রে বোতামটির জন্য উপলব্ধ না? অবমানিত হতে পারে?

20
লিনিয়ারলেটের পরিবর্তে রিলেটেলেটআউট ব্যবহার করছেন?
দীপক কেশরিয়া

1
আহ ক্র্যাপ .. তার জন্য দুঃখিত, আমি পুরোপুরি অতীত তাকিয়েছিলাম। ধন্যবাদ!

4
এটি এখনও আমাকে অবাক করে দেয় যে এত সহজ কিছু মনে হয় কীভাবে লিনিয়ারলাইট ব্যবহারের চেষ্টা করা এত কঠিন হয়ে যায়।
আলভারো স্যান্টিস্টেবন

2
ভবিষ্যতের দর্শকদের জন্য দীপকেশারিয়া, আপনি "অ্যান্ড্রয়েড: লেআউট_গ্রাভিটি =" শীর্ষ | ডান "রৈখিক রচনা
সুপারিম্পাআল

145

একক LinearLayoutসমাধান। কেবল একটি সরল ব্যবধান দর্শন যোগ করুন: (কেউ মনে করেনি এটির একটি
উল্লেখ করা হয়েছে, কেবল আরও জটিল বহু-লেআউট সমাধান solutions

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    android:layout_marginTop="35dp">

    <TextView
        android:id="@+id/lblExpenseCancel"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/cancel"
        android:textColor="#404040"
        android:layout_marginLeft="10dp"
        android:textSize="20sp"
        android:layout_marginTop="9dp" />

    <!-------------------------  ADDED SPACER VIEW -------------------->
    <View
        android:layout_width="0dp"
        android:layout_height="0dp"
        android:layout_weight="1"
        />
    <!------------------------- /ADDED SPACER VIEW -------------------->

    <Button
        android:id="@+id/btnAddExpense"
        android:layout_width="wrap_content"
        android:layout_height="45dp"
        android:background="@drawable/stitch_button"
        android:layout_marginLeft="10dp"
        android:text="@string/add"
        android:layout_gravity="right"
        android:layout_marginRight="15dp" />

</LinearLayout>

"হাইলাইটেড" ভিউটি নোট করুন, আমি অন্য কিছু সংশোধন করি নি। উচ্চতা = 0 নিশ্চিত করে যে এটি দৃশ্যমান নয়। প্রস্থ = 0 কারণ LinearLayoutওজন = 1 এর উপর ভিত্তি করে প্রস্থ নির্ধারণ করা হয় । এর অর্থ হ'ল স্পেসার ভিউটি এর দিকনির্দেশে (ওরিয়েন্টেশন) যতটা সম্ভব প্রসারিত করবে LinearLayout

লক্ষ্য করুন আপনি ব্যবহার করা উচিত android.widget.Spaceবা android.support.v4.widget.Spaceপরিবর্তেView যদি আপনার এপিআই স্তর এবং / অথবা নির্ভরতা এটি অনুমোদন। Spaceএকটি সস্তা উপায়ে কাজ অর্জন করে, কারণ এটি কেবল পরিমাপ করে এবং এর মতো কিছু আঁকতে চেষ্টা করে না View; এটা আরও অভিপ্রায় অভিপ্রায় প্রকাশ।


2
কেবল অ্যান্ড্রয়েড যুক্ত করুন: লেআউট_ওয়েট = "1" আর.আইডি.এলবিএলএক্সপেনসেনসেলে এবং এগুলিই।
hrules6872

1
@ h_rules যা হ্যাক করতে চাইলে কাজ করে তবে ভাবুন আপনি টেক্সটভিউতে ব্যাকগ্রাউন্ড যুক্ত করলে কী ঘটে।
TWiStErRob

2
আমি ভাবছি কেন এই উত্তরটি নীচে নামল, এটি কাজ করে এবং এটি দুর্দান্ত, আমি অবশ্যই এটি চেষ্টা করব।
এলভেদীন হামজাগিক

এটি মোবাইল বিকাশকারী হিসাবে নিখুঁত
শিবানন্দ দারুর

আপনি যদি একটি স্পেসার যুক্ত করেন, তবে বিভিন্ন স্ক্রিন আকারে আপনার আলাদা ফলাফল হয়। সুতরাং এটি আদর্শ সমাধান নয়।
জিওমিন্ট


28

আমি জানি এই প্রশ্নটি কিছুক্ষণ আগে জিজ্ঞাসা করা হয়েছিল, তবে আমি এটি আগেও করেছি এবং আইটেমগুলি সারিবদ্ধ করার সময় এটি আরও নিয়ন্ত্রণের অনুমতি দেয় you আপনি যদি ওয়েব প্রোগ্রামিংয়ের মতো দেখে থাকেন তবে এটি সহায়তা করে। আপনি কেবলমাত্র অন্য একটি বাসা বাঁধেন LinearLayoutযা এর ভিতরে আপনার বোতামটি ধারণ করবে। তারপরে আপনি বোতামটির বিন্যাসের মাধ্যাকর্ষণটি পরিবর্তন করতে পারেন TextViewএবং বামদিকে থাকা অবস্থায় ডানদিকে যেতে পারেন ।

এই কোড ব্যবহার করে দেখুন:

<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"             
android:orientation="horizontal" 
android:layout_marginTop="35dp">

<TextView
    android:id="@+id/lblExpenseCancel"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/cancel" 
    android:textColor="#404040"         
    android:layout_marginLeft="10dp" 
    android:textSize="20sp" 
    android:layout_marginTop="9dp"/>

<LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:gravity="right"
    android:orientation="horizontal" >

    <Button
        android:id="@+id/btnAddExpense"
        android:layout_width="wrap_content"
        android:layout_height="45dp"
        android:background="@drawable/stitch_button"
        android:layout_marginLeft="10dp"                    
        android:text="@string/add" 
        android:layout_gravity="right" 
        android:layout_marginRight="15dp"/>

</LinearLayout>

নেস্টেড লেআউটে আপনার প্যাডিংয়ের সাথে খেলতে হতে পারে যাতে এটি আপনার কীভাবে চায় তা কার্যকর করে।


2
আপনার নেস্টেড লেআউটের জন্য আপনার ফ্রেমলাউট ব্যবহার করা উচিত। একটি একক উপাদান অবস্থান এটি কি জন্য হয়। এবং এটিও একটি ওজন দিন যাতে এটি পিতামাতার ডান অংশটি পূরণ করে। যাইহোক আপেক্ষিক লেআউটটি ব্যবহার না করার জন্য +1।
Hjalmar

10

আর একবার চেষ্টা কর

 <?xml version="1.0" encoding="utf-8"?>
 <LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_gravity="right" 
    android:layout_height="wrap_content"             
    android:orientation="horizontal"  >

  <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
   android:layout_height="wrap_content"   
   android:orientation="horizontal" >

<TextView
    android:id="@+id/lblExpenseCancel"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginLeft="10dp"
    android:layout_marginTop="9dp"
    android:text="cancel"
    android:textColor="#ffff0000"
    android:textSize="20sp" />

<Button
    android:id="@+id/btnAddExpense"
    android:layout_width="wrap_content"
    android:layout_height="45dp"
    android:layout_alignParentRight="true"
    android:layout_marginLeft="10dp"
    android:layout_marginRight="15dp"
     android:textColor="#ff0000ff"
    android:text="add" />

 </RelativeLayout>
  </LinearLayout>

9

যেমনটি আগে দু'বার উল্লিখিত হয়েছে: লিনিয়ারলআউট থেকে রিলেটিভলআউটে স্যুইচ করা কাজ করে তবে আপনি এড়ানো না হয়ে সমস্যাটিও সমাধান করতে পারেন। লিনিয়ারলআউট উপলব্ধ সরঞ্জামগুলি ব্যবহার করুন: টেক্সটভিউকে একটি ওজন দিন = 1 (নীচের কোড দেখুন), আপনার বোতামটির ওজন 0 বা কোনওটিই থাকা উচিত। এই ক্ষেত্রে টেক্সটভিউটি বাকী সমস্ত স্থান নেবে যা আপনার টেক্সটভিউ বা বাটনভিউয়ের সামগ্রী প্রদর্শন করতে ব্যবহৃত হয় না এবং আপনার বোতামটি ডানদিকে ঠেলে দেয়।

<LinearLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:layout_marginTop="35dp">

        <TextView
            android:id="@+id/lblExpenseCancel"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/cancel"
            android:textColor="#404040"
            android:layout_marginLeft="10dp"
            android:textSize="20sp"
            android:layout_marginTop="9dp"

            **android:layout_weight="1"**

            />

        <Button
            android:id="@+id/btnAddExpense"
            android:layout_width="wrap_content"
            android:layout_height="45dp"
            android:background="@drawable/stitch_button"
            android:layout_marginLeft="10dp"
            android:text="@string/add"
            android:layout_gravity="right"
            android:layout_marginRight="15dp" />

    </LinearLayout>

2
এটি সেরা উত্তর। আমি আপনার পোস্টটি না পাওয়া পর্যন্ত আমি অনুরূপ কিছু লিখতে চেয়েছিলাম।
কোডিংডভে

RelativeLayoutমেমোরি সমস্যার কারণে স্যুইচিংয়ের চেয়ে এটি বেশ ভাল , যেহেতু RelativeLayoutমেমরির চেয়ে বেশি মেমরি গ্রাস করেLinearLayout
থান্ডারওয়াইরিং

7

আপনার বোতামটি নয়, লেআউটে গ্র্যাভিটি যুক্ত করতে হবে, বোতামের সেটিংসে মাধ্যাকর্ষণ বোতামের অভ্যন্তরে পাঠ্যের জন্য

<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_gravity="right" 
android:layout_height="wrap_content"             
android:orientation="horizontal" 
android:layout_marginTop="35dp">

2
তাহলে কি ঠিক সেইসাথে টেক্সটভিউ সারিবদ্ধ হবে না? আমার ঠিক ঠিক সংযুক্ত বোতামটি দরকার ...

1
আপনার যদি কেবল বাটনটি সারিবদ্ধ করতে হয় তবে রিলেটিভলয়েট ব্যবহার করুন।
মঙ্গলবার

1
এমনকি যদি আপনি সমস্ত বোতাম একত্রিত করতে চান তবে এটি কার্যকর হয় না (API 16)। শিশুদের দৃষ্টিভঙ্গিগুলি এখনও বামদিকে প্রান্তিক করা আছে।
m0skit0

5
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"             
    android:orientation="horizontal" 
    android:layout_marginTop="35dp">

    <TextView
        android:id="@+id/lblExpenseCancel"
        android:layout_width="0dp"
        android:layout_weight="0.5"
        android:layout_height="wrap_content"
        android:text="@string/cancel" 
        android:textColor="#404040"         
        android:layout_marginLeft="10dp" 
        android:textSize="20sp" 
        android:layout_marginTop="9dp"/>              

    <Button
        android:id="@+id/btnAddExpense"
        android:layout_width="0dp"
        android:layout_weight="0.5"
        android:layout_height="wrap_content"
        android:background="@drawable/stitch_button"
        android:layout_marginLeft="10dp"                    
        android:text="@string/add" 
        android:layout_gravity="right" 
        android:layout_marginRight="15dp"/>

</LinearLayout>

এই আপনার সমস্যার সমাধান হবে


3

আপনি যদি আপেক্ষিক লেআউটটি ব্যবহার করতে না চান বা করতে না চান তবে আপনি বাছাই করতে "লম্বালম্বী" এবং প্রস্থ "ফিলিং-প্যারেন্ট" এর সাথে একটি লিনিয়ারলআউটে বোতামটি আবদ্ধ করতে পারেন।

<LinearLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="fill_parent"
  android:layout_height="wrap_content"
  android:orientation="horizontal"
  android:layout_marginTop="35dp">

  <TextView
      android:id="@+id/lblExpenseCancel"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:text="@string/cancel"
      android:textColor="#404040"
      android:layout_marginLeft="10dp"
      android:textSize="20sp"
      android:layout_marginTop="9dp" />

  <LinearLayout
     android:layout_width="fill_parent"
     android:layout_height="wrap_content"
     android:orientation="vertical">
     <Button
        android:id="@+id/btnAddExpense"
        android:layout_width="wrap_content"
        android:layout_height="45dp"
        android:background="@drawable/stitch_button"
        android:layout_marginLeft="10dp"
        android:text="@string/add"
        android:layout_gravity="right"
        android:layout_marginRight="15dp" />
  </LinearLayout>
</LinearLayout> 

এটি কারণ কারণ যদি লিনিয়ারলআউটের অরিয়েন্টেশনটি অনুভূমিক হয় তবে মাধ্যাকর্ষণ কেবলমাত্র উল্লম্বভাবে দর্শনগুলিকে প্রভাবিত করবে। এবং যদি অরিয়েন্টেশনটি 'উল্লম্ব' হয় তবে মাধ্যাকর্ষণটি কেবল অনুভূমিকভাবে দৃষ্টিভঙ্গিকে প্রভাবিত করবে। লিনিয়ারালাউট ওরিয়েন্টেশন / মাধ্যাকর্ষণ ব্যাখ্যা সম্পর্কে আরও বিশদের জন্য এখানে দেখুন ।


2

কেবল অ্যান্ড্রয়েড যুক্ত করুন: মাধ্যাকর্ষণ = "ডান" এই লাইন প্যারেন্ট লেআউটে এটি কাজ করবে।

<LinearLayout
        android:id="@+id/withdrawbuttonContainer"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:background="@color/colorPrimary"
        android:orientation="horizontal"
        **android:gravity="right"**
        android:weightSum="5"
        android:visibility="visible">

        <Button
            android:id="@+id/bt_withDraw"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="@string/BTN_ADD"
            app:delay="1500" />

        <Button
            android:id="@+id/btn_orderdetail_amend"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="@string/BTN_CANCEL"
            app:delay="1500" />
</LinearLayout>

0

আমি 4 TextViewটি দিয়ে অনুরূপ লেআউট ব্যবহার করেছি । দুটি TextViewগুলি বাম দিকে এবং দুটি TextViewগুলি ডানদিকে প্রান্তিক করা উচিত। সুতরাং, এখানে আমার সমাধানটি, যদি আপনি LinearLayoutsএকা ব্যবহার করতে চান ।

<?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="wrap_content"
    android:orientation="horizontal"
    android:baselineAligned="false"
    android:padding="10dp" >

    <LinearLayout
        android:layout_width="0dip"
        android:layout_weight="0.50"
        android:layout_height="match_parent"
        android:gravity="left"
        android:orientation="horizontal" >

        <TextView
            android:id="@+id/textview_fragment_mtfstatus_level"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/level"
            android:textAppearance="?android:attr/textAppearanceMedium" />

        <TextView
            android:id="@+id/textview_fragment_mtfstatus_level_count"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text=""
            android:textAppearance="?android:attr/textAppearanceMedium" />
    </LinearLayout>

    <LinearLayout
        android:layout_width="0dip"
        android:layout_weight="0.50"
        android:layout_height="match_parent"
        android:gravity="right"
        android:orientation="horizontal" >

        <TextView
            android:id="@+id/textview_fragment_mtfstatus_time"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/time"
            android:textAppearance="?android:attr/textAppearanceMedium"
             />

        <TextView
            android:id="@+id/textview_fragment_mtfstatus_time_count"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text=""
            android:textAppearance="?android:attr/textAppearanceMedium" 
            />
    </LinearLayout>

</LinearLayout>

0

আপনি RelativeLayout ব্যবহার করতে পারেন বা আপনার বোতামের প্যারেন্ট লেআউটে মাধ্যাকর্ষণ = "ডান" সেট করতে পারেন।


0

আমি জানি এটি পুরানো তবে এখানে লিনিয়ার লেআউটে অন্য একটি হ'ল:

<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_marginTop="35dp">

<TextView
    android:id="@+id/lblExpenseCancel"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/cancel"
    android:textColor="#404040"
    android:layout_marginLeft="10dp"
    android:textSize="20sp"
    android:layout_marginTop="9dp" />

<Button
    android:id="@+id/btnAddExpense"
    android:layout_width="wrap_content"
    android:layout_height="45dp"
    android:background="@drawable/stitch_button"
    android:layout_marginLeft="10dp"
    android:text="@string/add"
    android:layout_gravity="center_vertical|bottom|right|top"
    android:layout_marginRight="15dp" />

কেবল মাধ্যাকর্ষণ বিপরীতে লেআউট_গ্রাভিটি দয়া করে নোট করুন।


কি হচ্ছে center_vertical|bottom|top? এগুলি আমার কাছে একচেটিয়া প্রান্তিককরণের মতো দেখায়।
TWiStErRob

0

আপনার প্রধান লেআউট হিসাবে Linearlayout এর পরিবর্তে Relativelayout ব্যবহার করা উচিত। আপনি যদি মূল হিসাবে সম্পর্কিত ব্যবহার করেন তবে ডান পাশের বোতামটি সহজেই হ্যান্ডেল করুন কারণ আপেক্ষিক বিন্যাসটি আমাদের ডান, বাম, উপরে এবং নীচে সারিবদ্ধভাবে সরবরাহ করে।


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