2011-08-10 278 views
0
TableLayout relativeLayout = (TableLayout)findViewById(R.id.ll1); 
     TableRow row =new TableRow(this); 
     Button button ; 
     int counter = 0; 

     for(int i = 0;i<=13;i++){ 
       counter++; 
       button = new Button(this); 
       button.setText(counter); 


       row.addView(button); 

      } 

     relativeLayout.addView(row,new TableLayout.LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT)); 
     relativeLayout.computeScroll();    

XML文件佈局和按鈕

<TableLayout android:id="@+id/ll1" android:shrinkColumns="true" 
     android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@id/button1" 
     xmlns:android="http://schemas.android.com/apk/res/android"></TableLayout> 

但每當我執行我的應用程序,它只是提出我的按鈕在單排和後5個按鈕的所有按鍵從屏幕上搬走。我不'想要添加更多的行,因爲我不想在我的代碼中硬編碼任何東西,如放置一些代碼if(counter%5 == 0)然後執行此操作。

是否有任何其他的方法來計算的寬度,如果按鍵相當於屏幕的寬度,然後做這樣或那樣的或類似的表佈局的任何財產只是換行的內容的任何其他方式?

+0

如果你只有一行,使用LinearLayout!我實際上不明白你想做什麼?將按鈕添加到佈局時應該發生什麼,它們應該如何顯示在屏幕上 - 單行,多行? – nenito

回答

0

是的,有一種方式來獲得任何組件的精確寬度在你的應用程序。看看我剛剛提出的問題here。正如你所看到的,我實例化了一個Paint對象,但除非你想獲得文本本身的寬度,否則這不是必需的。然而,你必須使用密度倍增:

float scale = getContext().getResources().getDisplayMetrics().density; 

這將是獲取組件寬度的任何功能(在這種情況下,您的按鈕)轉換成實際的像素寬度在任何給定的設備。所以你會得到按鈕寬度(通過調用你的Button對象的getWidth()函數),然後乘以該比例因子。

0

使用Contex的方法getResources()您可以訪問所有的資源爲你的應用程序包。該方法返回資源,你可以看到here可用的所有屬性。