লিনিয়ার বিন্যাসে একটি বোতাম কেন্দ্র করুন


338

আমি একটি সুন্দর হালকা প্রাথমিক পর্দা প্রদর্শন করতে লিনিয়ার লেআউটটি ব্যবহার করছি। এটিতে 1 টি বোতাম রয়েছে যা অনুভূমিকভাবে এবং উল্লম্বভাবে পর্দার মধ্যে কেন্দ্র করার কথা রয়েছে। যাইহোক আমি বাটনটি যা করার চেষ্টা করি তা কেন্দ্রের সারিবদ্ধ হবে। আমি নীচে এক্সএমএল অন্তর্ভুক্ত করেছি, কেউ আমাকে সঠিক দিকে নির্দেশ করতে পারে?

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

    <ImageButton android:id="@+id/btnFindMe" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content"
        android:layout_gravity="center_vertical|center_horizontal"
        android:background="@drawable/findme"></ImageButton>

</LinearLayout>

6
অনুভূমিক প্রান্তিককরণের সাথে একটি লিনিয়ারলআউটটিতে এটি আমার জন্য কী স্থির করেছিল তা ছিল layout_width"র‌্যাপ_কন্টেন্ট" এ সেট করা। পরবর্তীকালে যা layout_gravityকরার কথা ছিল তা করল!
কেউ কোথাও

আপনার যদি কঠোরভাবে লিনিয়ারলআউট ব্যবহার করা দরকার, আমি মনে করি এটি কাজ করা উচিত: স্ট্যাকওভারফ্লো
অ্যান্টোনিও ২

উত্তর:


373

আপনি যদি স্ক্রিনের মাঝামাঝি কোনও আইটেমটি কেন্দ্র করতে চান তবে এটি কোনও সারণিতে LinearLayoutপ্রচুর আইটেম প্রদর্শনের জন্য বোঝানো হয় না।

RelativeLayoutপরিবর্তে ব্যবহার করুন ।

সুতরাং প্রতিস্থাপন:

android:layout_gravity="center_vertical|center_horizontal"

সম্পর্কিত RelativeLayoutবিকল্পের জন্য:

android:layout_centerInParent="true"

সুতরাং আপনার লেআউট ফাইলটি দেখতে এইরকম হবে:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout android:id="@+id/RelativeLayout01" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent"
    xmlns:android="http://schemas.android.com/apk/res/android">

    <ImageButton android:id="@+id/btnFindMe" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:background="@drawable/findme"></ImageButton>

</RelativeLayout>

38
এমন একটি দৃষ্টান্ত রয়েছে যেখানে আপনাকে লিনিয়ারলআউট এবং কেন্দ্রের সামগ্রী ব্যবহার করতে হবে। এটি গ্রহণযোগ্য উত্তর হওয়া উচিত নয়। সম্ভব হলে একটি রিলেটিভলআউট ব্যবহার করার পরামর্শ দেওয়া ভাল, এবং যদি লিনিয়ারলআউটে কেন্দ্রীভূত করা যায় তবে তা নয় ।
স্টিভবট

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

এটা অবমূল্যায়ন করা হয়েছিল? এটি একটি ত্রুটি আছে।
瀧 谷 賢 司

436

লিনিয়ারলআউট ব্যবহার করে কেন্দ্র:

<LinearLayout
    android:id="@+id/LinearLayout1"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center"
    android:orientation="vertical" >

    <ImageButton
        android:id="@+id/btnFindMe"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@drawable/findme" />
</LinearLayout>

11
তুলনামূলক লেআউটের তুলনায় লিনিয়ারলআউটটি সহজ এবং হালকা-ওজনের, এটি আরও দ্রুত হওয়া উচিত।
SurlyDre

3
আমি মহাকর্ষের পরিবর্তে বিন্যাস_গ্রাভিটি ব্যবহার করছিলাম। অ্যান্ড্রয়েডে পরিবর্তন: মাধ্যাকর্ষণ = "কেন্দ্র" এটি আমার জন্য স্থির করেছে। ছদ্মবেশী ভুল
আক্কুশিউ

@ কাকুশিও আমার সমস্যা ছিল!
ডেনি

কমপক্ষে আমার জন্য অ্যান্ড্রয়েড: মাধ্যাকর্ষণ = "কেন্দ্র" লিনিয়ারলআউট বৈশিষ্ট্যটি কৌশলটি করেছে। ধন্যবাদ ভাই!
tthreetorch

42

আপনি কি চিত্রটিতে android:gravity="center_vertical|center_horizontal"বিন্যাস এবং সেটিংয়ের ভিতরে সংজ্ঞা দেওয়ার চেষ্টা android:layout_weight="1"করেছেন?


2
আমি এই বিকল্পটি পছন্দ করি যা আমাকে লিনিয়ারলয়আউট রাখতে দেয়! ( android:weight="1"যদিও এটি কেন্দ্রীভূত করার জন্য আমাকে বোতামে সেট করতে হবে না))
সাবাস্তিয়ান

4
অ্যান্ড্রয়েড: মহাকর্ষ আমার জন্য অনুভূমিক লিনিয়ারলআউটে কাজ করে না, তবে অ্যান্ড্রয়েড: লেআউট_গ্রাভিটি করে।
jfritz42

35

লিনিয়ার বিন্যাসের সাথে কাজ করে এমন একটি সাধারণভাবে ব্যবহৃত পদ্ধতি হ'ল চিত্র বোতামে একটি সম্পত্তি সেট করা

android:layout_gravity="center"

রৈখিক বিন্যাসে প্রতিটি বিষয় বাম-প্রান্তিককরণ, কেন্দ্র-প্রান্তিককরণ বা ডান-সারিবদ্ধ করতে হবে তা আপনি চয়ন করতে পারেন। উল্লেখ্য যে উপরের লাইনটি হুবহু একই

android:layout_gravity="center_vertical|center_horizontal"

4
অ্যান্ড্রয়েড যুক্ত করুন: অভিভাবক বিন্যাসে মাধ্যাকর্ষণ = "কেন্দ্র" সম্পত্তি - যা আপনার বোতামটি ধারণ করে (সন্তানের উপাদানগুলি)।
শেখ আখের

আপনারও অ্যান্ড্রয়েড.রিয়েন্টেশন = "উল্লম্ব" প্লাস পিতামাতার মধ্যে লেআউট_গ্রাভিটি প্রয়োজন, লাইনারলআউট উপাদানটি ওরফে ....
জো হ্যালি


8

আপনি যদি ব্যবহার করেন LinearLayoutতবে মাধ্যাকর্ষণ কেন্দ্রটি যুক্ত করতে পারেন:

<LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        android:gravity="center">
            <Button
            android:layout_width="200dp"
            android:layout_height="wrap_content"
            />
</LinearLayout>`

7

এই সঙ্গে সহজ

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_weight="1"
        android:visibility="visible" 
        android:gravity="center"
        android:orientation="vertical" >

        <ProgressBar
            android:id="@+id/pbEndTrip"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            />

        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="10dp"
            android:gravity="center"
            android:text="Gettings" />
    </LinearLayout>


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

    <ImageButton android:id="@+id/btnFindMe" 
        android:layout_width="match_parent" 
        android:layout_height="wrap_content"
        android:layout_gravity = "center"
        android:background="@drawable/findme">
    </ImageButton>

</LinearLayout>

উপরের কোডটি কাজ করবে।


2

আমার মেশিন থেকে সম্পূর্ণ এবং কাজের নমুনা ...

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:orientation="vertical"
    tools:context=".MainActivity"
    android:gravity="center"
    android:textAlignment="center">


    <TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceLarge"
        android:text="My Apps!"
        android:id="@+id/textView"
        android:gravity="center"
        android:layout_marginBottom="20dp"
     />

    <Button
        android:layout_width="220dp"
        android:layout_height="wrap_content"
        android:text="SPOTIFY STREAMER"
        android:id="@+id/button_spotify"
        android:gravity="center"
        android:layout_below="@+id/textView"
        android:padding="20dp"
        />

    <Button
        android:layout_width="220dp"
        android:layout_height="wrap_content"
        android:text="SCORES"
        android:id="@+id/button_scores"
        android:gravity="center"
        android:layout_below="@+id/textView"
        android:padding="20dp"
        />


    <Button
        android:layout_width="220dp"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:text="LIBRARY APP"
        android:id="@+id/button_library"
        android:gravity="center"
        android:layout_below="@+id/textView"
        android:padding="20dp"
        />

    <Button
        android:layout_width="220dp"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:text="BUILD IT BIGGER"
        android:id="@+id/button_buildit"
        android:gravity="center"
        android:layout_below="@+id/textView"
        android:padding="20dp"
        />

    <Button
        android:layout_width="220dp"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:text="BACON READER"
        android:id="@+id/button_bacon"
        android:gravity="center"
        android:layout_below="@+id/textView"
        android:padding="20dp"
        />

    <Button
        android:layout_width="220dp"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:text="CAPSTONE: MY OWN APP"
        android:id="@+id/button_capstone"
        android:gravity="center"
        android:layout_below="@+id/textView"
        android:padding="20dp"
        />

</LinearLayout>


আপনি কেবল 'রিলেটিভলআউট' এর ভাইবোনদের জন্য 'অ্যান্ড্রয়েড: লেআউট_বেলো' ব্যবহার করতে পারেন
জাজ

2

অ্যান্ড্রয়েডের এক্সএমএল বৈশিষ্ট্যগুলির জন্য অ্যান্ড্রয়েড ডকুমেন্টেশন অনুসারে : লেআউট_গ্রাভিটি , আমরা এটি সহজেই করতে পারি :)

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

    <ImageButton android:id="@+id/btnFindMe" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content"

        android:layout_gravity="center"

        android:background="@drawable/findme"></ImageButton>

</LinearLayout>

1
অ্যান্ড্রয়েড: লেআউট_গ্রাভিটি = "কেন্দ্র" ঠিকঠাক কাজ করে :) ধন্যবাদ!
আমিন সৌমিয়া

1

সত্য android:layout_alignParentTop="true"এবং android:layout_centerHorizontal="true"বোতামে সেট করুন , এটির মতো:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    >
     <Button
        android:id="@+id/switch_flashlight"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/turn_on_flashlight"
        android:textColor="@android:color/black"
        android:onClick="action_trn"
        android:background="@android:color/holo_green_light"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:padding="5dp" />
</RelativeLayout>

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


0

আপনি এই কোডটি ব্যবহার করে দেখতে পারেন:

<LinearLayout
            android:id="@+id/linear_layout"
            android:layout_width="fill_parent"
            android:layout_height="0dp"
            android:layout_gravity="center"
            android:orientation="horizontal"
            android:weightSum="2.0"
            android:background="@drawable/anyBackground" >

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:orientation="vertical"
            android:layout_weight="1" >

            <ImageView
                android:id="@+id/img_mail"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center"
                android:background="@drawable/yourImage" />
        </LinearLayout>

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:orientation="vertical"
            android:layout_weight="1" >



<ImageView
            android:id="@+id/img_save"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:layout_gravity="center"
            android:background="@drawable/yourImage" />
        </LinearLayout>
        </LinearLayout>

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

0

শুধু এটি ব্যবহার করুন (এটি আপনার বিন্যাসের কেন্দ্রে তৈরি করতে)

        android:layout_gravity="center" 

আর ব্যবহার করুন

         android:layout_marginBottom="80dp"

         android:layout_marginTop="80dp"

পদ পরিবর্তন করতে


0

এছাড়াও আপনি LinearLayout প্রস্থ সেট করতে পারেন wrap_contentএবং ব্যবহার android:layout_centerInParent, android:layout_centerVertical="true":

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:layout_centerInParent="true"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
>

<ImageButton android:id="@+id/btnFindMe" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content"       
    android:background="@drawable/findme"/>


0

এটা আমার জন্য কাজ করছে।

android:layout_alignParentEnd="true"

-2

আপনি কি এই চেষ্টা করেছেন?

  <TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/mainlayout" android:orientation="vertical"
android:layout_width="fill_parent" android:layout_height="fill_parent">
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:padding="5px"
android:background="#303030"
>
    <RelativeLayout
    android:id="@+id/widget42"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerHorizontal="true"
    >
    <ImageButton
    android:id="@+id/map"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="map"
    android:src="@drawable/outbox_pressed"
    android:background="@null"
    android:layout_toRightOf="@+id/location"
    />
    <ImageButton
    android:id="@+id/location"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="location"
    android:src="@drawable/inbox_pressed"
    android:background="@null"
    />
    </RelativeLayout>
    <ImageButton
    android:id="@+id/home"
    android:src="@drawable/button_back"
    android:background="@null"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerVertical="true"
    />
</RelativeLayout>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:padding="5px"
android:orientation="horizontal"
android:background="#252525"
>
    <EditText
    android:id="@+id/searchfield"
    android:layout_width="fill_parent"
    android:layout_weight="1"
    android:layout_height="wrap_content"
    android:layout_centerHorizontal="true"
    android:background="@drawable/customshape"
    />
    <ImageButton
    android:id="@+id/search_button"
    android:src="@drawable/search_press"
    android:background="@null"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerVertical="true"
    />
</LinearLayout>
<com.google.android.maps.MapView
    android:id="@+id/mapview" 
    android:layout_weight="1"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content" 
    android:clickable="true"
    android:apiKey="apikey" />

</TableLayout>

-2

ব্যবহার

অ্যান্ড্রয়েড layout_centerHorizontal = "সত্য"


1
আসলে ভোগন 101, এটি রিলেটিভলআউটে একটি বৈধ সম্পত্তি। :) এটি প্রশ্নের উত্তর দেয় না, যদিও ব্যবহারকারী লিনিয়ারলআউট ব্যবহার করছিল এবং উভয়ভাবে উল্লম্ব এবং অনুভূমিকভাবে কেন্দ্র করতে চেয়েছিল।
সারা

-7

আপেক্ষিক লেআউটগুলি ব্যবহার করা সহজ হবে তবে লিনিয়ার লেআউটের জন্য আমি প্রস্থের পিতামাতার সাথে মেলে কিনা তা নিশ্চিত করে সাধারণত কেন্দ্র করে থাকি:

    android:layout_width="match_parent"

এবং তারপরে ঠিক সেই অনুযায়ী ডান এবং বামে মার্জিন দিন।

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