2017-05-03 6 views
0

Ich möchte TextViews zu LinearLayout aufblasen.TextViews zu LinearLayout aufblasen

Ich habe ein Layout activity_play_game und Java-Klasse PlayGameActivity. Derzeit für hartcodierte Anzahl von Textviews sieht es wie folgt aus:

enter image description here

Jetzt habe ich versucht, Anzahl der Textviews hinzuzufügen entsprechend dem Wert der Variablen numberForbiddenWords. Ich habe ein Stück Code, der wie folgt aussieht:

LinearLayout playGame = (LinearLayout) findViewById(R.id.activity_play_game); 
TextView temp; 
TextView[] textViews = new TextView[numberForbiddenWords]; 
for(int i = 0; i < numberForbiddenWords; i++) { 
    temp = new TextView(this); 
    playGame.addView(temp); 
    textViews[i] = temp; 
} 

Und ich habe eine Methode, die Textviews zum activity_play_game hinzufügt. Leider jetzt sieht es wie folgt aus:

enter image description here

Wie Sie es Textviews am unteren Rand hinzugefügt sehen können. So entfernte ich alle Textviews aus activity_play_game und hinzugefügt Linearlayout Textviews aufzublasen:

enter image description here

Wie kann ich Textviews auf diese Linearlayout über den Tasten aufblasen? fand ich diese Art von Lösung:

activity_to_add_words:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical"> 

    <TextView 
     android:id="@+id/textout" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" /> 

In der Java-Klasse:

final View addView; 
LayoutInflater layoutInflater = (LayoutInflater) getBaseContext() 
     .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
addView = layoutInflater.inflate(R.layout.activity_to_add_words, 
     null); 
final TextView textOut = (TextView) addView.findViewById(R.id.textout); 

aber das ist für ein View, nicht TextView. Weißt du, wie man es macht?

+0

Sie können 'TextView' in' LinearLayout' nicht aufblasen Sie können es 'LinearLayout' mit' addView' hinzufügen –

Antwort

1

Holen Sie sich die Referenz Ihres LinearLayoutcontainer_blue und fügen Sie TextView's hinzu.

Try this:

LinearLayout playGame = (LinearLayout) findViewById(R.id.container_blue); 
TextView temp; 
TextView[] textViews = new TextView[numberForbiddenWords]; 
for(int i = 0; i < numberForbiddenWords; i++) { 
    temp = new TextView(this); 
    temp.setText("TextView " + String.valueOf(i)); 
    temp.setId(i); 
    temp.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT,LayoutParams.WRAP_CONTENT)); 

    playGame.addView(temp); 
    textViews[i] = temp; 
} 
+0

Jahr, es funktioniert! Ich hatte: LinearLayout playGame = (LinearLayout) findViewById (R.id.activity_play_game); aber es sollte sein: LinearLayout playGame = (LinearLayout) findViewById (R.id.container_blue); nur andere Layout :) Vielen Dank :) – Tomas

+0

Mein Vergnügen :) ... – FAT

1

eine Layout-Datei vornehmen, wie dies mit Textview:

layout_textview.xml

<?xml version="1.0" encoding="utf-8"?> 
<TextView xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:id="@+id/txt_spin" 
android:textSize="18sp" 
android:background="#fff" 
android:padding="5dp" 
android:textColor="#000" 
android:layout_height="wrap_content"/> 

dann folgenden Code in Ihrer Java-Datei anwenden:

LinearLayout playGame = (LinearLayout) findViewById(R.id.container_blue);  
LayoutInflater li =(LayoutInflater)this.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
View view = li.inflate(R.layout.layout_textview, null); 
TextView txt= (TextView) view.findViewById(R.id.txt_spin); 
playGame.addView(view); 

Hoffen, dass es für Sie ... glücklich Codierung .. :)

0

Soweit ich Ihr erstes Problem sehen war über die Elemente dynamisch vor den drei Schaltflächen hinzufügen. Wenn Sie sie vor den drei Schaltflächen hinzufügen möchten, rufen Sie einfach playGame.addView(temp,0); auf. Dadurch wird das Element immer zur ersten Position im Layout hinzugefügt. Wenn Sie eine bestimmte Reihenfolge der hinzugefügten Ansichten benötigen, müssen Sie mit der for-Schleife spielen, um sie in der richtigen Reihenfolge hinzuzufügen.

Verwandte Themen