2017-10-27 18 views
-1

私は数が答え
の文字に依存しますので、答えは4文字が含まれている場合、私は私のアプリでボタンを追加したい
Javaコードでbuttons_dynamically追加することで大きな問題を抱えています
私は4つのボタンを表示する必要があり、以下のコードでは、私は助けを必要以上のボタンを追加する1つのボタンを追加するだけですボタンの列を追加する方法を動的

main.java

TableRow tr= new TableRow(this); 
     final Button btn = new Button(this); 
     TableRow.LayoutParams tl= new TableRow.LayoutParams(TableRow.LayoutParams.WRAP_CONTENT 
       , TableRow.LayoutParams.WRAP_CONTENT); 

     btn.setBackgroundColor(Color.GRAY); 
      btn.setText("h"); 
      tl.setMargins(10,10,0,0); 
      btn.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      btn.setText(" "); 
      } 
     }); 


     tr.addView(btn,tl); 

     setContentView(tr); 

i

答えて

0

あなたが望むことを行う最も直接的な方法は、ボタンを配置するためのレイアウトをレイアウトに追加することです。私はこのために相対レイアウトを使用しました。私の主なレイアウトには、入力に使用されるedittext、新しいボタンの生成をトリガーするボタン、および新しいボタンを保持する相対レイアウトがあります。相対レイアウトはデフォルトではスクロールされません。そのため、最終目標がいくらか必要になる場合があります。以下は、メインボタンのonclickリスナーです:

TableRow tr= new TableRow(MainActivity.this); 

      for(char c:editText.getText().toString().toCharArray()) { 
       final Button btn = new Button(MainActivity.this); 
       TableRow.LayoutParams tl = new TableRow.LayoutParams(TableRow.LayoutParams.WRAP_CONTENT 
         , TableRow.LayoutParams.WRAP_CONTENT); 

       btn.setBackgroundColor(Color.GRAY); 
       btn.setText(String.valueOf(c)); 
       tl.setMargins(10, 10, 0, 0); 
       btn.setOnClickListener(new View.OnClickListener() { 
        @Override 
        public void onClick(View view) { 
         btn.setText(" "); 
        } 
       }); 


       tr.addView(btn, tl); 
      } 

      holder.removeAllViews(); 
      holder.addView(tr); 
+0

のために働くことを願っていますこのhttp://prntscr.com/h2yo0bこれは私のデザインですが、このデザインでは答えのボックスにはボタンの数が固定されています。私はロゴの数に応じてボタンの数を数えたいと思います。私はbを持っている週検索して何も助けてくれなかった –

+0

5文字ごとにホルダーにビューを追加して新しいテーブル行を作成するようにロジックを変更するだけで済みます。 'holder.removeAllViews()'も削除してください。最後のものだけが表示されます。 – SRoseDev88

+0

異なる行のすべてのボタンではなく、同じテーブル行または同じ行に追加したい –

0
<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:id="@+id/activity_test" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:paddingBottom="@dimen/activity_vertical_margin" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    tools:context="com.slocamo.ucee.Test"> 

    <EditText 
     android:id="@+id/input" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:hint="Eneter Text" /> 

    <Button 
     android:id="@+id/done" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_below="@+id/input" 
     android:text="Done" /> 

    <ScrollView 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_below="@+id/done"> 

     <TableLayout 
      android:id="@+id/parent" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:layout_marginTop="16dp" 
      android:background="@color/black" /> 
    </ScrollView> 
</RelativeLayout> 

に従い、使用後のコード

parentLayout = (TableLayout) findViewById(R.id.parent); 
     input = (EditText) findViewById(R.id.input); 
     findViewById(R.id.done).setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       String message = input.getText().toString().trim(); 
       int size = message.length(); 
       parentLayout.removeAllViews(); 
       if (size != 0) { 
        int loop = (message.length()/maxRowButtons) + 1; 
        for (int i = 0; i < loop; i++) { 
         TableRow tableRow = new TableRow(Test.this); 
         int buttonCount = size % maxRowButtons == 0 ? maxRowButtons : size % maxRowButtons; 
         for (int j = 0; j < buttonCount; j++) { 
          final Button btn = new Button(Test.this); 
          TableRow.LayoutParams tl = new TableRow.LayoutParams(TableRow.LayoutParams.WRAP_CONTENT 
            , TableRow.LayoutParams.WRAP_CONTENT); 
          btn.setBackgroundColor(Color.GRAY); 
          btn.setText(" Hi "); 
          tl.setMargins(10, 10, 0, 0); 
          btn.setOnClickListener(new View.OnClickListener() { 
           @Override 
           public void onClick(View view) { 
            btn.setText(" "); 
           } 
          }); 
          tableRow.addView(btn); 
         } 
         parentLayout.addView(tableRow); 
        } 
       } 
      } 
     }); 
    } 

が、それは私が何かのように見えるしたい別の何かをしたいあなた

+0

@Shshankが機能しませんでした –

関連する問題