2013-03-20 31 views
0

在活動中,我添加了一個水平滾動視圖。這包含一個「添加新的設置」按鈕和以前添加的所有設置作爲按鈕。這些設置保存在SQLLite數據庫中。Android:向滾動視圖添加按鈕沒有合適的大小

在我的應用程序的開始我加載數據庫中的所有集。對於每個集合,我在滾動視圖中添加一個自己的按鈕。

顯示所有按鈕,但動態添加的按鈕沒有合適的大小。它們應該具有與「添加新設置」按鈕相同的高度和寬度。

如何將第一個按鈕的尺寸複製到其他按鈕?

這裏我的XML:

<HorizontalScrollView 
    android:id="@+id/horizontalScrollView1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentTop="true" > 

    <LinearLayout 
     android:id="@+id/innerLayout" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:orientation="horizontal" > 

     <Button 
      android:id="@+id/btn_NewSet" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:height="100dp" 
      android:onClick="OnExitClick" 
      android:text="@string/New_Set" 
      android:width="100dp" /> 

    </LinearLayout> 
</HorizontalScrollView> 

這裏我的java代碼:

db.open(); 
Cursor allSets = db.getAllSets(); 
if (allSets.moveToFirst()) 
{ 
    Button bDummy = (Button) findViewById(R.id.btn_NewSet); 
    LinearLayout innerLayout = (LinearLayout) findViewById(R.id.innerLayout); 
    do 
    { 
      Button b1 = new Button(this); 
      b1.setHeight(bDummy.getHeight()); 
      b1.setWidth(bDummy.getWidth()); 
      b1.setText(allSets.getString(1)); 
      b1.setLayoutParams(new LinearLayout.LayoutParams(
       LinearLayout.LayoutParams.WRAP_CONTENT, 
       LinearLayout.LayoutParams.WRAP_CONTENT 
      ));     
      innerLayout.addView(b1); 

    }while (allSets.moveToNext()); 
} 
db.close(); 

回答

0

他們是不一樣的大小,因爲動態按鈕也使用WRAP_CONTENT。如果你希望他們相同的大小,您可以使用該按鈕「ID/btn_NewSet」的寬度和高度屬性在新按鈕的的LayoutParams

+0

非常感謝您的回答快,但仍然有一點「問題」。 我已將我的代碼更改爲: 'b1.setLayoutParams(new LinearLayout.LayoutParams(bDummy.getWidth(),bDummy.getHeight()));' 每次嘗試訪問按鈕的寬度和高度時,/btn_NewSet「爲」0「。此代碼首先位於「onCreate」中,但即使位於「onPostResume」中,第一個按鈕的尺寸也是「0」。 – Tagamoga 2013-03-20 16:29:49

0

你應該嘗試使用動態視圖通脹:

1)使專用XML(mybutton.xml,例如):

<?xml version="1.0" encoding="utf-8"?> 
<Button xmlns:android="http://schemas.android.com/apk/res/android" 
     android:id="@+id/btn_NewSet" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:height="100dp" 
     android:text="@string/New_Set" 
     android:width="100dp" /> 

2)充氣,並動態地連接到innerLayout

LayoutInflater inflater = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    LinearLayout innerLayout = (LinearLayout) findViewById(R.id.innerLayout); 
    do 
    { 
     Button b1 = (Button)inflater.inflate(R.layout.mybutton,null); 
     b1.setText(allSets.getString(1)); 
     innerLayout.addView(b1); 
    }while (allSets.moveToNext()); 
相關問題