2013-01-10 105 views
-1

我有一個線性佈局,帶有兩個等重的按鈕。所以他們佔據整個屏幕(寬度明智)。設置視圖寬度與其他視圖相同

在另一個線性佈局的第一下面,我只有1個按鈕,我想成爲同前2個按鈕中的任意1的寬度。

有沒有一種簡單的方法,比使用GridView控件或實現代碼如下等其他..,

我嘗試這樣做:

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> 

但第三個按鈕現在不可見。

謝謝

回答

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> 
0

您可以設置第三個按鈕的寬度在Java代碼中,只需用get和set寬度的方法。

讓您的其他按鈕之一的寬度,並設置爲寬度爲3。

其次,你的第三個按鈕是看不見的,因爲你沒有在你的2個LinearLayouts根佈局。

您應該添加第三個「根」的LinearLayout周圍,與Android:方向=「垂直」

0

原因你的第三個按鈕是不可見的因爲經由

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

構造時(和設置)的新LinearLayout.LayoutParams重量不會轉移到新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); 

現在應有三可見太。

相關問題