2016-11-27 2 views
1

Ich arbeite an meiner ersten Android-App und habe in einige Schwierigkeiten gerannt. Ich versuche eine neue Aktivität zu starten, die eine ArrayList aus der vorherigen Aktivität aufnimmt und für jedes Element in der Liste eine Schaltfläche erstellt. Ich habe versucht, viele andere Stapelüberlaufpfosten zu betrachten, aber keiner von ihnen hat geholfen, mein Problem zu lösen.Android-App dynamisch erstellten Schaltflächen erscheinen alle an der gleichen Stelle

Ich habe viele verschiedene Strategien ausprobiert, und mein Code ist zur Zeit wie folgt:

public class VideoMenu extends AppCompatActivity { 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_video_menu); 
    Bundle b = getIntent().getExtras(); 

    ArrayList<String> videos = b.getStringArrayList("videos"); 

    setContentView(R.layout.activity_video_menu); 

    for(int i=0;i<videos.size();i++){ 
     Button myButton = new Button(this); 
     myButton.setText(videos.get(i)); 
     myButton.setId(i); 

     RelativeLayout ll = (RelativeLayout)findViewById(R.id.videos); 
     RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.WRAP_CONTENT); 
     if (i != 0) { 
      lp.addRule(RelativeLayout.END_OF, i - 1); 
     } 
     myButton.setLayoutParams(lp); 

     ll.addView(myButton,lp); 
    } 

} 

}

und XML-Code:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:id="@+id/videos" 
android:layout_alignParentBottom="true" 
android:layout_alignWithParentIfMissing="true" 
android:layout_alignParentLeft="true" 
android:layout_alignParentTop="true" 
android:orientation="vertical"> 

Dies kompiliert just fine , aber alle Tasten erscheinen übereinander. Wenn Sie Gründe dafür angeben könnten, warum Code-Vorschläge funktionieren könnten, wäre ich Ihnen dankbar. Ich möchte mehr erfahren über diese :)

Edit: Fest Typo

+0

können Sie ListView in Android verwenden, um Ihr Problem zu lösen, finden Sie viele Tutorials auf Google wie http://www.vogella.com/tutorials/AndroidListView/article.html. Es erleichtert die Handhabung beim Scrollen und auch bei OnClick-Ereignissen. – Swapnil

Antwort

0

Der Grund dafür ist, dass Sie die Tasten, um eine RelativeLayout hinzufügen. RelativeLayout fügen Sie im Grunde alle Ansichten hinzu, wo immer Sie in der Ansicht angeben. Du spezifizierst nicht wirklich, also erscheinen sie alle übereinander.

Um dies zu beheben, Ihre RelativeLayout zu einem LinearLayout ändern, mit orientation entweder horizontal oder vertical. horizontal fügt Ansichten nebeneinander in einer horizontalen Linie hinzu, und vertical fügt sie in einer vertikalen Linie hinzu.

+0

Das hat funktioniert, und vielen Dank für die Erklärung. Ich habe ein vertikales LinearLayout verwendet und es in eine ScrollView eingebettet. Vielen Dank! – William

Verwandte Themen