2016-08-16 1 views
3

Ich möchte Text analysieren und für jedes Wort erstellen - Taste, aber ich weiß nicht, wie sie eine nach der anderenErstellen von Schaltflächen in der angegebenen Reihenfolge programmatisch

String s = "Alice was beginning to get very tired of sitting"; 
String[] q = s.split(" "); 
for (int i = 0; i < q.length; i++) { 
    Button myButton = new Button(this); 
    myButton.setText(q[i]); 

    RelativeLayout layout = (RelativeLayout) findViewById(R.id.layout1); 
    layout.addView(myButton, params); 

} 

img

+2

Ich schlage vor, Sie versuchen ein 'TableLayout'. Ein RelativeLayout dynamisch zu bauen, wird schwierig sein. –

+0

I zweiter Kommentar von cricket_007. Es wäre wiehern unmöglich, eine relative Anordnung wie diese mit einer for-Schleife zu füllen. –

+0

addrules, aber kann nicht mit loop sein –

Antwort

2

See zu organisieren Diese benutzerdefinierte Bibliothek: FlowLayout

Während Sie Ansichten innerhalb FlowLayout hinzufügen, wird es automatisch umbrochen, wenn kein Platz für das nächste Element vorhanden ist.

2

Es ist nicht viel falsch an Ihrem Ansatz, es ist nur, dass relative layout, wie der Name suggeriert erfordert Kind Ansichten einige Parameter haben, um die Ansichten relativ zu ihnen z. oben, unten usw. Dadurch erhalten Sie Ansichten, die sich überlappen und daher nur die zuletzt hinzugefügte Ansicht oben angezeigt wird.

Verwenden Sie stattdessen FlowLayout und alles wird gut.

0

Sie müssen unter

Heres ein Beispiel RelativeLayout Parameter wie im Beispiel definieren, um Ihnen den Einstieg, füllen Sie den Rest als anwendbar:

TextView tv = new TextView(mContext); 
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(
    ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT); 
params.addRule(RelativeLayout.ALIGN_PARENT_LEFT, RelativeLayout.TRUE); 
params.leftMargin = 107 
... 
mRelativeLayout.addView(tv, params); 

Die Dokumentation für RelativeLayout.LayoutParams und die Konstrukteure sind here

Von: How to add a view programmattically to RelativeLayout?

Klicken Sie auf den Link unten, um weitere nützliche Informationen zu erhalten.

Hoffe, dass es

0

Im folgenden Code helfen wird, sollten Sie die Obergrenzen der für ändern, auf eine Variable.

public class MainActivity 
     extends Activity 
     implements View.OnClickListener { 

     @Override 
     public void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 

      TableLayout layout = new TableLayout (this); 
      layout.setLayoutParams(new TableLayout.LayoutParams(4,5)); 

      layout.setPadding(1,1,1,1); 

      for (int f=0; f<=13; f++) { 
       TableRow tr = new TableRow(this); 
       for (int c=0; c<=9; c++) { 
        Button b = new Button (this); 
        b.setText(""+f+c); 
        b.setTextSize(10.0f); 
        b.setTextColor(Color.rgb(100, 200, 200)); 
        b.setOnClickListener(this); 
        tr.addView(b, 30,30); 
       } // for 
       layout.addView(tr); 
      } // for 

      super.setContentView(layout); 
     } //() 

     public void onClick(View view) { 
      ((Button) view).setText("*"); 
      ((Button) view).setEnabled(false); 
     } 
    } // class 
Verwandte Themen