2012-01-10 11 views
0

だから、私がしたいのは、LinearLayoutのprogramaticallsにボタンを追加することです。私はこのようのLinearLayoutを設定するように、それらが水平ために、ボタンの1行としてapperしたい:Buttonsをプログラムで追加するときに親LinearLayoutのサイズを変更する

<LinearLayout 
android:id="@+id/button_frame" 
android:orientation="horizontal" 
android:layout_width="fill_parent" 
android:layout_height="wrap_content"> 

</LinearLayout> 

それから私はプログラム的にボタンを追加します。

for (String text: textlist) { 

     Button cbut = new Button(context); 
     cbut.setText(text); 
     cbut.setLayoutParams(new ViewGroup.LayoutParams(
       ViewGroup.LayoutParams.WRAP_CONTENT, 
       ViewGroup.LayoutParams.WRAP_CONTENT)); 
     cbut.setOnClickListener(new Button.OnClickListener() { 

      @Override 
      public void onClick(View arg0) { 
       Log.d(LOGTAGNAME, "TEST: " + buttonText); 
      } 
     }); 

     button_frame.addView(cbut); 
     button_frame.invalidate(); 
    } 

ボタンが拡張されるまで、この作品画面の幅。だから私は、ボタンが画面の幅を拡張する場合、水平スクロールバーがあることを起こりたいです。代わりに、LinearLayout内のボタンの「改行」があります。

私はリストビューの周りのスクロールビューを含むさまざまな設定を試みましたが、私はスクロールバーを見たことはありません。

私の問題は、LinearLayoutが正しくサイズ変更されていないことです。ビューが追加されるたびにLinearLayoutの幅を再計算するにはどうすればよいですか? invalidate()は全く効果がありません。

ありがとうございました。

答えて

1

直線レイアウトを水平線の内側に配置してみてください。ボタンが画面の幅を超えると、スクロールバーが表示されます。

+0

こんにちは、ありがとうございます。それは私がする必要があるすべてでした。スクロールビューの代わりにhorizo​​ntalscrollviewを使用する。今それは動作します! – homtg

1

try HorizontalScrollViewボタンを追加してください。必要なときに自動的にスクロールします。詳細なヘルプを共有の完全なレイアウトコードのため

1

LinearLayoutは、ビューの唯一の「線形」ポジショニングを提供;)私はあなたがこのように行うことができます意味:

[btn1][btn2][btn3][btn4] 

またはこのような:間

[btn1] 
[btn2] 
[btn3] 
[btn4] 

違い2つのバリアントはandroid:orientation paramにあります。より複雑なビューの場合は、TableLayoutまたはRelativeLayoutを使用してください。

あなたは線形レイアウトクレタこの構造のスクロール可能なバリアント行いたい場合:

<HorizontalScrollView 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    ...any other params...> 
    <LinearLayout 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:orientation="horisontal" 
     ...any other params.../> 
</HorizontalScrollView> 

を、あなたは今それを行うように直線的なレイアウトにボタンを追加します。

関連する問題