我有一个线性布局,有两个相等重量的按钮。因此它们占据整个屏幕(宽度方面)。
在第一个下方的另一个线性布局中,我只有一个按钮,其宽度我希望与前两个按钮中的任何一个相同。
除了使用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>
但是第3个按钮现在是不可见的。
谢谢
答案 0 :(得分: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>
答案 1 :(得分:0)
您可以使用get和set width方法设置java代码中第3个按钮的宽度。
获取其他按钮的宽度,并将其设置为第3个按钮的宽度。
其次,您的第3个按钮是不可见的,因为您的2个LinearLayouts周围没有根布局。
你应该在它周围添加第三个“root”LinearLayout,android:orientation =“vertical”
答案 2 :(得分: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);
现在也应该看到三个。