在相对布局中设置宽度比

时间:2012-11-23 11:23:00

标签: android xml layout

我是Android Layouts的新手。

我试图以1:3:1的比例设置年龄:EditText:年,并在高度上设置相同的尺寸。

我应该使用TableLayout吗?如果是,当我在其他行中执行某些操作时,如何防止TableRow1更改宽度等?

enter image description here

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

    <TextView
        android:id="@+id/txtAge"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
         android:layout_alignBaseline="@+id/search_text"
        android:layout_alignBottom="@+id/search_text"
        android:layout_alignParentLeft="true"
        android:text="Age"
        android:layout_weight="0.3"
        android:textAppearance="?android:attr/textAppearanceLarge" />

 <TextView
        android:id="@+id/txtYears"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBaseline="@+id/search_text"
        android:layout_alignBottom="@+id/search_text"
        android:layout_alignParentRight="true"
        android:text="Years"
        android:layout_weight="0.3"
        android:textAppearance="?android:attr/textAppearanceLarge" />

    <EditText
        android:id="@+id/search_text"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_toLeftOf="@id/txtYears"
        android:layout_toRightOf="@id/txtAge"
        android:ems="10"
        android:hint="Enter your age"
        android:inputType="text|number"
        android:lines="1"
        android:layout_weight="0.7"
        android:maxLength="2"
        android:maxLines="1" />



    <TextView
        android:id="@+id/txtHeight"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignBaseline="@+id/enterHeight"
        android:layout_below="@+id/search_text"
        android:text="Height"
        android:textAppearance="?android:attr/textAppearanceLarge" 
        android:layout_weight="1"/>

    <Spinner
        android:id="@+id/spinHeight"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_alignTop="@+id/txtHeight"
        android:layout_weight="1" />

    <EditText
        android:id="@+id/enterHeight"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/search_text"
        android:layout_toLeftOf="@+id/spinHeight"
        android:layout_toRightOf="@+id/txtHeight"
        android:ems="10"
        android:hint="Enter your height"
        android:inputType="text|number"
        android:lines="1"
        android:layout_weight="3"
        android:maxLength="3"
        android:maxLines="1" >

        <requestFocus />
    </EditText>

</RelativeLayout>

3 个答案:

答案 0 :(得分:4)

我认为这就是你想要的。见下图。

<?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" >

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="50dp"
    android:orientation="horizontal"
    android:weightSum="100" >

    <TextView
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="20"
        android:gravity="center_vertical|center_horizontal"
        android:text="Age"
        android:textColor="#FFF"
        android:textSize="16sp"
        android:textStyle="bold" />

    <EditText
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="60" />

    <TextView
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="20"
        android:gravity="center_vertical|center_horizontal"
        android:text="Years"
        android:textColor="#FFF"
        android:textSize="16sp"
        android:textStyle="bold" />
</LinearLayout>

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="50dp"
    android:orientation="horizontal"
    android:weightSum="100" >

    <TextView
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="20"
        android:gravity="center_vertical|center_horizontal"
        android:text="Height"
        android:textColor="#FFF"
        android:textSize="16sp"
        android:textStyle="bold" />

    <EditText
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="60" />

    <Spinner
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="20" />
</LinearLayout>

</LinearLayout>

enter image description here

答案 1 :(得分:2)

我认为你应该使用线性布局。你可以设置android:weightSum="10"属性。

它的总布局。现在你必须使用android:layout_weight="2"设置冷冻对象。

这样就可以在布局中控制你的对象。

<TextView
    android:id="@+id/textView1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerHorizontal="true"
    android:layout_centerVertical="true"
    android:layout_marginLeft="5dp"
    android:layout_weight="2"
    android:text="Age" />

<EditText
    android:id="@+id/editText1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_weight="6" >
</EditText>

<TextView
    android:id="@+id/textView1"
    android:layout_height="wrap_content"
    android:layout_centerHorizontal="true"
    android:layout_centerVertical="true"
    android:layout_marginRight="5dp"
    android:layout_weight="2"
    android:text="Years" />

答案 2 :(得分:0)

有类似的东西..伪代码未经测试..

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

<LinearLayout
    android:gravity = "center_horizontal"
    android:id="@+id/firstLinearLayout"
    android:orientation = "horizontal"
    android:weightSum="10">

<TextView

        android:weight = "2"
        />

 <TextView

        android:weight = "6"
        />

    <EditText

        android:weight = "2"
        />
</LinearLayout>
<LinearLayout
    android:gravity = "center_horizontal"
    android:layout_below="@id/loginButtonLayout"
    android:orientation = "horizontal"
    android:weightSum="10">
</LinearLayout>