2017-08-03 7 views
1

これまで数回質問されていましたが、私は問題を解決することができません。プログラムで複数のボタンを追加しようとしています。私は、ボタンを水平に揃えたい。ただし、ボタンは1つだけ表示されます。私はこれまでされており、複数のボタンをプログラムで作成する:Android

private void locationSort() { 

    RelativeLayout townLayout = (RelativeLayout) locationLayout.findViewById(R.id.town_sort); 
    for (int i = 0; i <= 3; i++) { 

     LayoutInflater inflater = getLayoutInflater(); 

     Button btnTag = (Button) inflater.inflate(R.layout.buttons, null, 
       false); 
     for (int j = 0; j < 4; j++) { 

      btnTag.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT)); 
      btnTag.setText("Button"); 
      btnTag.setBackgroundResource(R.drawable.alpha_button_selector); 
      btnTag.setClickable(true); 
      btnTag.setTextColor(Color.WHITE); 
      btnTag.setGravity(Gravity.CENTER); 
      btnTag.setId(j); 
     } 
     townLayout.addView(btnTag); 

     btnTag.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       Toast.makeText(context, "this is test", Toast.LENGTH_SHORT).show(); 
      } 
     }); 
    } 
} 

を試してみましたが、私は同じで検索などのリンクを経て、

しており、他にもたくさんありますが、ここでは複数のボタンを作ることはできません。毎回1つのボタンだけが表示されます。 誰でも助けてくれますか? Relativeにすべてのあなたの意見が同じ場所になりますので、全ての

答えて

1

まず、あなたが作成し、

1

最初に(あなたは一つだけButtonを見ることができる理由です)、HORIZONTALオリエンテーション、RelativeLayoutのisteadでLinearLayoutを使用する必要があります単一のButton btnTagの場合、この単一のボタンを複数回ループして変更します(したがって、すべての変更が最後に上書きされるため意味がありません)。最後に、その単一のボタンをビューグループに追加します。一度。だからここはすべて正しく動作します(これはあなたが期待したものではありません)。

ボタンの作成とループの一部にaddView()を追加する必要があります。

Button btnTag; 

for (int j = 0; j < 4; j++) { 
     btnTag = (Button) inflater.inflate(R.layout.buttons, null, 
      false); 

     ... 

     btnTag.setId(j); 

     townLayout.addView(btnTag); 
    } 

ボタンインフレのための独自のXMLファイルを使用しても、あなたはそのXMLに特定の属性を移動し、すべてのsetClickable()を削除する必要があり、setTextColor()など

あなたはすなわち、垂直のLinearLayoutでRelativeLayoutコンテナを置き換えることを検討すべきですそうしないと、コードが重なり合わずにボタンが重なり合うことになります。

+0

はい、うまくいきました。ありがとう。 – manini

+0

これは動作しますが、locationSort()が呼び出されるたびにボタンの数が増えていくという問題があります。 – manini

+0

メソッドが "sort"という名前の場合、最初に何かが作成されるのはなぜですか? –

関連する問題