2011-06-28 9 views
0

ListViewをListViewActivityに表示しています。 LisViewの上部にボタンを追加したいと思います。次のようにファイルlistview_singlegrey.xmlがあるリストビューの先頭にボタンを動的に追加する

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    //.... 
    setContentView(R.layout.listview_singlegrey); 
    LinearLayout linear = (LinearLayout) findViewById(R.id.list_comment); 
    Button btAddComment = new Button(this); 
    btAddComment.setText("Añadir comentario"); 
    linear.addView(btAddComment); 
    setContentView(linear); 
    //....  
} 

:私はこれを試してみました

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" android:id="@+id/list_comment" 
     android:paddingLeft="10dp" android:paddingRight="10dp" android:background="@drawable/fondomain">  
    <ListView android:id="@+id/android:list" android:listSelector="@android:color/transparent" 
      android:layout_width="wrap_content" android:layout_height="wrap_content" 
      android:divider="@layout/linedivider" android:dividerHeight="10px" 
      android:cacheColorHint="#0000" android:paddingTop="10dp"   
      /> 
</LinearLayout> 

しかし、私は、ボタンを参照してください傾けます。なぜどんなアイデア?

答えて

1

あなたがリストビューの上部にあるボタンを追加したい場合は、あなたがzero'thインデックスに

linear.addView(btAddComment, 0); 

をそのを追加する必要があります今、あなたのリストビューがインデックスに1

1

setContentView(linear); 

を取り除く。また、最初のXMLにボタンを追加してみてください、それが現れていることを確認します。 layout_heightlayout_weightパラメータを使用する必要があるかもしれないので、ListViewはそれをオフスクリーンにプッシュしません。適切なパラメータがわかったら、実行時に設定します。

1

であるが、これに見てくださいメソッドaddHeaderViewは、リストの先頭に表示される固定ビューを追加します。

0

ボタンのLayoutParamsがコードで作成されたときに、そのレイアウトパズルが欠けていると思います。 Button.setLayoutParams(新しいLayoutParams(...))を使用します。

しかし、私はこの方法をお勧めしません。なぜリストビューの上にボタンを追加しないでください ?その後、そこに固定されたままです。

<LinearLayout> <Button/> <ListView /> </LinearLayout> 

あなたはリストビューでスクロールする「スクロールボタン」を、したい場合は、 はgetLayoutInflater.inflateを経由して、それを膨らませる、ボタンでXMLファイルを書き込む(R.layout ..)と使用:このようにListView.addHeaderView()。

+0

私はレイアウト上のボタンを修正したくありません。私は他のListActivitiesでそれを必要としません。 – Dayerman

0

addHeaderViewListViewを使用する必要があるもの。

ドキュメントによると

リストの上部に表示され する固定ビューを追加します。 addHeaderViewが複数回呼び出された の場合、ビューは追加された順に表示されます。 この呼び出しを使用してビューを追加すると、必要に応じて にフォーカスを移動できます。注:setAdapterを呼び出す前にthisを と呼んでください。これはそうです ListViewは ヘッダーとフッターのビューも考慮に入れて、付属のカーソル でラップできます。

0

listviewのヘッダーは必要ですか?このようなヘッダーを使用することができます

listView.addHeaderView(view); 

ビューはどのビューコンポーネントでもかまいません。

0

レイアウトにボタンを追加する前に、レイアウトパラメータを設定してみる必要があります。このような

何か:

btAddComment.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT)); 

トリックを行う必要があります。そうでない場合は、私に知らせてください。