web-gelistirme-sc.com

Eşit miktarda alan kaplamak için 3 düğmeyi bir LinearLayout'a yerleştirin

arka arkaya yatay olarak eşit miktarda kullanılabilir alanı olan üç düğmeye sahip olmak istiyorum .Android:layout_gravity kullandım. Sorun nedir?

düzen xml:

<LinearLayout 
    xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:layout_width="fill_parent"
    Android:layout_height="wrap_content"
    Android:orientation="horizontal"
    Android:weightSum="1.0"
    >

    <Button Android:id="@+id/button"
            Android:layout_width="wrap_content"
            Android:layout_height="wrap_content"
            Android:text="@string/Bg"
            Android:background="@drawable/button_red"
            Android:layout_weight=".2"
            Android:layout_gravity="left"
    />
    <Button Android:id="@+id/button"
            Android:layout_width="wrap_content"
            Android:layout_height="wrap_content"
            Android:text="@string/Bm"
            Android:background="@drawable/button_red"
            Android:layout_weight=".2"
            Android:textColor="#ffffff"
            Android:layout_gravity="center"
    />

    <Button
        Android:id="@+id/button"
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:background="@drawable/button_red"
        Android:layout_weight=".2"
        Android:text="@string/Bf"
        Android:layout_gravity="right"
    />

</LinearLayout>

birisi neyin yanlış olduğunu görürse, teşekkürler.

38
user1527152

Aşağıdaki düzen çalışması gerekir. Ağırlıklar LinearLayout'lar içindir ..

<LinearLayout 
xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:layout_width="fill_parent"
Android:layout_height="wrap_content"
Android:orientation="horizontal"
Android:weightSum="3"
>

    <Button Android:id="@+id/button1"
            ...
            Android:layout_weight="1"/>

    <Button Android:id="@+id/button2"
            ...
            Android:layout_weight="1"/>

    <Button
        Android:id="@+id/button3"
        ...
        Android:layout_weight="1"/>

</LinearLayout>
103
Ronnie

layout_weight ayarının yanı sıra, layout_width veya layout_height öğelerini 0dp olarak ayarlamanız gerekir. Bu nedenle, örneğin düğmeleri yatay olarak dağıtmak istiyorsanız, layout_width, 0dp ve layout_weight.2 şeklinde veya sahip olduğunuz düğmelere eşit olduğu sürece herhangi bir sayı olmalıdır.

öyleyse düzeniniz böyle olmalı

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

<Button Android:id="@+id/button"
        Android:layout_width="0dp"
        Android:layout_height="wrap_content"
        Android:text="@string/Bg"
        Android:background="@drawable/button_red"
        Android:layout_weight="1"
/>
<Button Android:id="@+id/button"
        Android:layout_width="0dp"
        Android:layout_height="wrap_content"
        Android:text="@string/Bm"
        Android:background="@drawable/button_red"
        Android:layout_weight="1"
        Android:textColor="#ffffff"
/>

<Button
    Android:id="@+id/button"
    Android:layout_width="0dp"
    Android:layout_height="wrap_content"
    Android:background="@drawable/button_red"
    Android:layout_weight="1"
    Android:text="@string/Bf"
/>
</LinearLayout>
12
jimbocorn

Tüm düğmelerde ağırlık toplamını eşit orana bölün.

Layout_gravity özelliğini kaldırın ve Android ekleyin: layout_weight = 0.33.

Çalışacak

2
moDev

Bunu kontrol et:

<RelativeLayout 
    Android:id="@+id/layout"
    Android:layout_width="fill_parent"
    Android:layout_height="wrap_content">

    <Button 
        Android:id="@+id/button1"
        Android:layout_width="0dp"
        Android:layout_weight="1"
        Android:layout_height="wrap_content"
        Android:layout_alignParentLeft="true"/>
    <RelativeLayout 
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:layout_centerHorizontal="true">
        <Button 
            Android:id="@+id/button2"
            Android:layout_width="0dp"
            Android:layout_weight="1"
            Android:layout_height="wrap_content"
            Android:layout_toRightOf="@+id/button1"/>
    </RelativeLayout>
    <Button 
        Android:id="@+id/button3"
        Android:layout_width="0dp"
        Android:layout_weight="1"
        Android:layout_height="wrap_content"
        Android:layout_alignParentRight="true"/>
</RelativeLayout>
1
AkashG

Lütfen aşağıdaki düzen pasajını göz önünde bulundurun:

<LinearLayout
    Android:orientation="horizontal"
    Android:layout_width="match_parent"
    Android:layout_height="wrap_content"
    Android:weightSum="3">

    <ImageView
        Android:src="@drawable/logo1"
        Android:layout_width="0dp"
        Android:layout_height="wrap_content"
        Android:layout_weight="1"
        Android:layout_gravity="left|center_vertical" />

    <TextView
        Android:id="@+id/toolbar_title"
        Android:layout_width="0dp"
        Android:layout_height="wrap_content"
        Android:text="Some Title"
        Android:textColor="@Android:color/black"
        Android:layout_gravity="center"
        Android:gravity="center"
        Android:layout_weight="1" />

    <ImageView
        Android:src="@drawable/logo2"
        Android:layout_width="0dp"
        Android:layout_height="wrap_content"
        Android:layout_weight="1"
        Android:layout_gravity="right|center_vertical" />

</LinearLayout>

Yukarıda not edilmesi gereken 2 şey.

A. WeightSum 3 olan bir LinearLayout oluşturdum. 

B. İçinde, her birinin düzeni 1 ağırlığı olan 3 öğe oluşturdum, böylece alt öğelerin tüm alanı kendi aralarında eşit bir şekilde dağıtmalarını sağlayabiliyorum.

0

Her Düğme için Android:layout_weight="1" ver

İşte Android Geliştirici Kılavuzu:

Düzen ağırlığı

LinearLayout ayrıca Android: layout_weight niteliği olan tek tek çocuklara ağırlık vermeyi de destekler. Bu özellik, ekranda ne kadar yer kaplaması gerektiği konusunda bir görünüme "önem" değeri verir. Daha büyük bir ağırlık değeri, üst görünümde kalan boşlukları doldurmasını sağlar. Alt görünümler bir ağırlık değeri belirleyebilir ve ardından görünüm grubundaki kalan herhangi bir alan, çocuklara beyan edilen ağırlıkları oranında atanır. Varsayılan ağırlık sıfırdır.

Örneğin, üç metin alanı varsa ve bunlardan ikisine 1 ağırlık verilirse, diğerine ağırlık verilmezken, diğerlerine ağırlık verilmemesi durumunda, ağırlıksız üçüncü metin alanı büyümez ve yalnızca içeriği için gereken alanı işgal eder. Diğer ikisi, üç alanın tümü ölçüldükten sonra kalan boşluğu doldurmak için eşit olarak genişleyecektir. Eğer üçüncü alana 2 ağırlık verilirse (0 yerine), o zaman şimdi diğerlerinden daha önemli olarak ilan edilir, böylece kalan toplam alanın yarısını alır, ilk ikisi kalanı eşit olarak paylaşır.

Kaynak

0

Düğmeleri göreceli bir düzende yerleştirin. düğmelere özellikler ekleyin allignParentleft = true, başka bir allignParentcenter = true ve her düğüme allignParentRight = true.

0
ShineDown

Pragmatik olarak ağırlıksız yaptım

 float width = CommonUtills.getScreenWidth(activity);
    int cardWidth = (int) CommonUtills.convertDpToPixel(((width) / 3), activity);

    LinearLayout.LayoutParams params =
        new LinearLayout.LayoutParams(cardWidth,
            LinearLayout.LayoutParams.MATCH_PARENT);

    btnOne.setLayoutParams(params);
    btnTwo.setLayoutParams(params);
    btnThree.setLayoutParams(params);

    public class CommonUtills {
        public static float getScreenWidth(Context context) {
            float width = (float) 360.0;
            DisplayMetrics displayMetrics = context.getResources().getDisplayMetrics();
            width = displayMetrics.widthPixels / displayMetrics.density;
            return width;
        }
    }



    <LinearLayout
    Android: layout_width = "match_parent"
    Android: layout_height = "50dp"    
    Android: orientation = "horizontal" >


        <Button
    Android: id = "@+id/btnOne"
    Android: layout_width = "wrap_content"
    Android: layout_height = "match_parent" > </Button>


        <Button
    Android: id = "@+id/btnTwo"
    Android: layout_width = "wrap_content"
    Android: layout_height = "wrap_content" > </Button>



        <Button
    Android: id = "@+id/btnThree"
    Android: layout_width = "wrap_content"
    Android: layout_height = "wrap_content" > </Button> 
        </LinearLayout>
0
Rajesh Nasit