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