2011-08-10 6 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つのボタンの後にすべてのボタンが画面から外に移動。私はいくつかのコードを置くようなコードをハードコードしたくないので、(counter%5 == 0)そしてこれを行うと、もっと多くの行を追加したいのです。

ボタンの幅が画面の幅と等しい場合は、幅を計算する他の方法はありませんか?それとも、または単に行の内容を折り返すテーブルレイアウトのプロパティのように他の方法ですか?

+0

行が1つしかない場合は、LinearLayoutを使用してください。私はあなたがしたいことを実際に理解していないのですか?レイアウトにボタンを追加したときに何が起こるべきか、それらが画面上にどのように表示されるべきか - 1行、複数行??? – nenito

答えて

0

はいアプリ内のコンポーネントの正確な幅を取得する方法があります。しばらく前に私の質問に私の答えを見てhere。ご覧のように、Paintオブジェクトをインスタンス化しますが、テキスト自体の幅を取得しない限り、必要ではありません。

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

任意のデバイス上の実際のピクセル幅に対する成分(この場合は、あなたのボタン)の幅を取得する任意の関数に変換します。しかし、あなたは、密度の乗数を使用する必要があります。ボタンの幅を取得し(ButtonオブジェクトのgetWidth()関数を呼び出して)、その倍率で乗算します。

0

。このメソッドはリソースを返し、利用可能なすべてのプロパティはhereです。

関連する問題