Android 动态网格布局

Android 动态网格布局,android,android-relativelayout,grid-layout,Android,Android Relativelayout,Grid Layout,我想实现网格,它将动态填充。我想知道实现这种相对布局(列表视图)或网格布局的最佳方法是什么 您需要GridView。简单的例子。在您的情况下,需要为每一行创建一个XML布局,以同时容纳TextView和ImageView。这里的其他答案解决了这个问题 您可以动态生成GridView GridView将根据您的需要包含ImageView和TextView。您必须使用自定义适配器。在它的getView方法中,填充ImageView和TextView 示例: GridView item.xml: &l

我想实现网格,它将动态填充。我想知道实现这种相对布局(列表视图)或网格布局的最佳方法是什么


您需要
GridView
。简单的例子。在您的情况下,需要为每一行创建一个XML布局,以同时容纳TextView和ImageView。这里的其他答案解决了这个问题

您可以动态生成GridView

GridView将根据您的需要包含ImageView和TextView。您必须使用自定义适配器。在它的
getView
方法中,填充ImageView和TextView

示例:

GridView item.xml:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <ImageView
        android:id="@+id/imgItem"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:src="@drawable/ic_launcher" />

    <TextView
        android:id="@+id/txtItem"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:fontFamily="trebuchet"
        android:textColor="@android:color/black"
        android:textSize="15sp"
        android:textStyle="bold" />

</LinearLayout>
适配器类:

//getView method in your adapter class

@Override
public View getView(int position, View convertView, ViewGroup parent)
{
    View itemView = convertView;
    ViewHolder holder = null;

    if (itemView == null)
    {
        final LayoutInflater layoutInflater =
            (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        itemView = layoutInflater.inflate(resourceId, parent, false);

        holder = new ViewHolder();
        holder.imgItem = (ImageView) itemView.findViewById(R.id.imgItem);
        holder.txtItem = (TextView) itemView.findViewById(R.id.txtItem);
        itemView.setTag(holder);
    }
    else
    {
        holder = (ViewHolder) itemView.getTag();
    }

    Item item = getItem(position);
    holder.imgItem.setImageDrawable(item.getImage());
    holder.txtItem.setText(item.getTitle());

    return itemView;
}
现在在活动类中添加适配器数据,然后将该适配器设置为GridView


希望有帮助。

只需将
GridView
与自定义适配器一起使用即可。每次要更新视图时,在适配器上调用
notifyDataSetChanged()

网格布局。祝你好运。请你给我指一些教程,动态生成网格。因为我事先不知道行数。是否可以将图像视图和文本视图放在网格视图中以实现相同的效果?是的,最简单的方法是制作每个单元格都符合的XML布局。有人刚刚向你们展示了怎么做。答案应该有描述链接细节的最低代码或描述。复制那个。下次可以。:)
//getView method in your adapter class

@Override
public View getView(int position, View convertView, ViewGroup parent)
{
    View itemView = convertView;
    ViewHolder holder = null;

    if (itemView == null)
    {
        final LayoutInflater layoutInflater =
            (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        itemView = layoutInflater.inflate(resourceId, parent, false);

        holder = new ViewHolder();
        holder.imgItem = (ImageView) itemView.findViewById(R.id.imgItem);
        holder.txtItem = (TextView) itemView.findViewById(R.id.txtItem);
        itemView.setTag(holder);
    }
    else
    {
        holder = (ViewHolder) itemView.getTag();
    }

    Item item = getItem(position);
    holder.imgItem.setImageDrawable(item.getImage());
    holder.txtItem.setText(item.getTitle());

    return itemView;
}