سؤال

Hello I am new in Android, and my English is bad. I try it. I want to divide my layout in 3 diferent sizes.

<LinearLayout 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"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity" >

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="fill_parent" >

        <RelativeLayout
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:layout_weight="1" >

            <TextView
                android:id="@+id/txt"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:gravity="center"
                android:text="Esto es una mierda de Relative Layout" />
        </RelativeLayout>

        <RelativeLayout 
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:layout_weight="2">
            <Button
                android:id="@+id/btn1"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:gravity="bottom"
                android:text="Button" />
        </RelativeLayout>
        <RelativeLayout 
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:layout_weight="1">
            <Button
                android:id="@+id/btn"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:gravity="top"
                android:text="Button" />
        </RelativeLayout>
    </LinearLayout>

</LinearLayout>

My code should display three columns, the center column being twice the size of the side columns. If I set all the layouts with the same layout weight, they all display correctly, but with the same size.

However, when I set the center column with a different size value (in the layout weight) it dissapears from the screen.

What can I do to display my layouts in three columns with different sizes?

If anybody can help me. Thanks for reading.

هل كانت مفيدة؟

المحلول 2

enter image description here

    <LinearLayout
        android:id="@+id/stupid_android"
        android:orientation="horizontal"
        android:layout_width="match_parent"
        android:layout_height="match_parent" >

        <View
            android:layout_width="0dip"
            android:layout_height="match_parent"
            android:background="#FF0000"
            android:layout_weight="1" />

        <View
            android:layout_width="0dip"
            android:layout_height="match_parent"
            android:background="#0000FF"
            android:layout_weight="2" />

        <View
            android:layout_width="0dip"
            android:layout_height="match_parent"
            android:background="#00FF00"
            android:layout_weight="1" />

    </LinearLayout>


</LinearLayout>

نصائح أخرى

use this structure:

    <!--  parent layout-->

    <LinearLayout
        android:weightSum="1">

         <!-- children layouts -->

        <RelativeLayout
             android:weight="0.25"
         ></RelativeLayout>

       <RelativeLayout
             android:weight="0.5"
         ></RelativeLayout>

       <RelativeLayout
             android:weight="0.25"
         ></RelativeLayout>

    </LinearLayout>

This is your modified code:

<LinearLayout 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"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity" >

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="horizontal" >

        <RelativeLayout
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1" >

            <TextView
                android:id="@+id/txt"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:gravity="center"
                android:text="Esto es una mierda de Relative Layout" />
        </RelativeLayout>

        <RelativeLayout
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="2" >

            <Button
                android:id="@+id/btn1"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:gravity="bottom"
                android:text="Button" />
        </RelativeLayout>

        <RelativeLayout
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1" >

            <Button
                android:id="@+id/btn"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:gravity="top"
                android:text="Button" />
        </RelativeLayout>
    </LinearLayout>

</LinearLayout>

Use match_parent instead fill_parent. Althought you write program for API 8-.

Do it like this :

It's important to set the corresponding width/height to 0dp.

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="horizontal"
    android:weightSum="4" >

    <TextView
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="1"
        android:text="column1" />

    <TextView
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="2"
        android:text="column2" />

    <TextView
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="1"
        android:text="column3" />
</LinearLayout>
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top