2016-11-27 4 views
1

私は最初のアンドロイドアプリを開発中で、何らかのトラブルに遭遇しました。私は以前のアクティビティからArrayListを取り込み、リスト内の各項目のボタンを作成する新しいアクティビティを開始しようとしています。私は他の多くのスタックオーバーフローポストを見てみましたが、それらのどれもが私の問題を解決するのに役立っていません。Androidアプリは動的に作成されたボタンをすべて同じ場所に表示します

私は多くの異なる戦略を試してみました、そして私のコードは以下のように現在

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); 
    } 

} 

}

とXMLコード:

<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"> 

これはうまくコンパイルすべてのボタンがお互いの上に表示されます。コード提案がうまくいく理由を記入していただければ幸いです。私はこれについての詳細を学ぶしたいと思います:)

編集:固定タイプミス

+0

アンドロイドのListViewを使用して問題を解決することができます。http://www.vogella.com/tutorials/AndroidListView/article.htmlのようなGoogleで多くのチュートリアルを見つけることができます。スクロールやonClickイベントの処理が簡単になります。 – Swapnil

答えて

0

の理由は、あなたがRelativeLayoutにボタンを追加しているということです。 RelativeLayoutは基本的に、ビュー内で指定した場所にすべてのビューを追加します。あなたは本当に指定していないので、彼らはお互いの上に表示されます。

は、この問題を解決するためには、horizontalverticalのいずれかのorientationで、あなたのRelativeLayoutLinearLayoutに変更します。 horizontalは水平線でビューを並べて表示し、verticalはビューを縦線で追加します。

+0

これはうまくいきました。説明に非常に感謝します。私は垂直LinearLayoutを使用し、それをScrollViewに埋め込んだ。ありがとうございました! – William

関連する問題