如何在android网格中添加控件

时间:2016-08-28 08:53:47

标签: android android-layout android-studio

如何在android网格布局中添加控件,使其根据数据绑定显示在每一行中。

<GridLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/favorites_grid"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#00ff00"
    android:rowCount="2"
    android:columnCount="2">
    <Button
        android:text="Cell 0"
        android:layout_row="0"
        android:layout_column="0"
        android:textSize="14dip" />
    <Button
        android:text="Cell 1"
        android:layout_row="0"
        android:layout_column="1"
        android:textSize="14dip" />

    <Button
        android:text="Cell 2"
        android:layout_row="1"
        android:layout_column="0"
        android:textSize="14dip" />
    <Button
        android:text="Cell 3"
        android:layout_row="1"
        android:layout_column="1"
        android:textSize="14dip" />
</GridLayout>

我希望这是动态的,不指定行号。请帮助。

1 个答案:

答案 0 :(得分:0)

不能说Android Binding支持这类事情。目前为止,最好的方法是将GridView与自定义适配器一起使用,或RecycleViewGridLayoutManager一起使用。

以下是GridView适配器的示例:

// create a new Button for each cell
public View getView(int position, View convertView, ViewGroup parent) {
   Button btn;
   if (convertView == null) {
       final Context context = parent.getContext();
       btn = new Button(context);
       btn.setLayoutParams(new GridView.LayoutParams(
               ViewGroup.LayoutParams.WRAP_CONTENT,
               ViewGroup.LayoutParams.WRAP_CONTENT)
       );
       btn.setPadding(8,8,8,8);
       btn.setOnClickListener(new View.OnClickListener() {
           @Override
           public void onClick(View view) {
               Toast.makeText(context, "Button " + view.getTag() + " clicked", Toast.LENGTH_SHORT).show();
           }
       });
     } else {
         btn = (Button) convertView;
     }

     btn.setText("Cell " + position]);
     btn.setTag(position);
     return btn;
}