以百分比(或类似)动态调整视图大小?

时间:2010-03-08 19:21:03

标签: android user-interface

举个例子:假设我有两个EditText和一个我用作登录表单的按钮。我希望EditTexts大小相同,一个接一个,登录Button宽度的一半。像这样:

example login screenshot

我能够找到使按钮1/2宽度(但仍然保持动态大小)的唯一方法是使用带有空视图的TableLayout作为第一个字段。像这样:

    <TableLayout
        android:stretchColumns="0,1"
        android:shrinkColumns="0,1"
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content"
        android:layout_below="@id/login_EditText_password">
        <TableRow>
            <TextView
                android:layout_width="fill_parent"
                android:layout_height="wrap_content" />
            <Button 
                android:text="@string/login_login" 
                android:id="@+id/login_Button_login" 
                android:layout_width="fill_parent" 
                android:layout_height="wrap_content" />
        </TableRow>
    </TableLayout>

这感觉就像一个神奇可怕的黑客,并且GOT是更好的方式。你知道吗?

1 个答案:

答案 0 :(得分:2)

通常使用layout_weight来实现percentage like behavior。但这通常在父视图中。在这种情况下,您可以创建一个空视图来占用另一半,但是希望按钮是上述字段宽度的一半是一个奇怪的用例。

编辑,这是一个例子:

    <LinearLayout 
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content"
        android:layout_below="@id/login_EditText_password"
        android:orientation="horizontal">
        <View
            android:layout_width="0dip"
            android:layout_height="0dip"
            android:layout_weight="1" />
        <Button 
            android:text="@string/login_login" 
            android:id="@+id/login_Button_login" 
            android:layout_width="0dip" 
            android:layout_height="wrap_content"
            android:layout_weight="1" />
    </LinearLayout>