-1

我有一个带有 2 个等重按钮的线性布局。所以它们占据了整个屏幕(宽度方向)。

在第一个下方的另一个线性布局中,我只有 1 个按钮,我希望其宽度与前 2 个按钮中的任何一个相同。

除了使用gridview或tableview等之外,有没有一种简单的方法可以做,

我试过这个:

Button one = (Button) findViewById(R.id.one);
Button two = (Button) findViewById(R.id.two);
Button three = (Button) findViewById(R.id.three);

three.setLayoutParams(new LinearLayout.LayoutParams(
        one.getLayoutParams()));

布局:

<LinearLayout
            xmlns:android="http://schemas.android.com/apk/res/android"
            xmlns:tools="http://schemas.android.com/tools"
            android:id="@+id/first"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal" >

        <Button
            android:id="@+id/one"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1" />

        <Button
            android:id="@+id/two"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1" />
    </LinearLayout>

    <LinearLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:id="@+id/second"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_below="@id/first"
        android:orientation="horizontal" >

        <Button
            android:id="@+id/three"
            android:layout_width="150dp"
            android:layout_height="wrap_content" />
    </LinearLayout>

但是第三个按钮现在是不可见的。

谢谢你

4

3 回答 3

1

试试这个第二排

<LinearLayout
    android:id="@+id/second"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_below="@id/first1"
    android:weightSum="2"
    android:orientation="horizontal" >

    <Button
        android:layout_weight="1"
        android:id="@+id/three"
        android:layout_width="0dp"
        android:layout_height="wrap_content" />
</LinearLayout>
于 2013-01-10T14:16:44.423 回答
0

您可以在 java 代码中设置第三个按钮的宽度,只需使用 get 和 set width 方法。

获取其他按钮之一的宽度,并将其设置为第三个按钮的宽度。

其次,您的第三个按钮是不可见的,因为您的 2 个 LinearLayouts 周围没有根布局。

您应该在其周围添加第三个“根”LinearLayout,使用 android:orientation="vertical"

于 2013-01-10T14:16:10.240 回答
0

您的第三个按钮不可见的原因是因为在构造(和设置)新的 LinearLayout.LayoutParams 时通过

three.setLayoutParams(new LinearLayout.LayoutParams(one.getLayoutParams()));

权重不会转移到新的 LinearLayout.LayoutParams 中。

您可以使用以下代码来解决这种情况:

LinearLayout.LayoutParams newlayout = new LinearLayout.LayoutParams(one.getLayoutParams());
    newlayout.weight = 1;
    three.setLayoutParams(newlayout);

或者您可以使用另一个构造函数(LinearLayout.LayoutParams (int width, int height, float weight)),它明确地采用权重:

LayoutParams param = new LinearLayout.LayoutParams(one.getLayoutParams().width, one.getLayoutParams().height,((LinearLayout.LayoutParams) one.getLayoutParams()).weight);
three.setLayoutParams(param);

现在三个也应该可见。

于 2013-01-10T14:53:21.843 回答