Android 如何在GridView布局中将TextView添加到ImageView中?
我需要一个GridView,但在每个网格中,上面/里面都会有一个ImageView和TextView 它将类似于每个网格中的项目图像,以及图像上项目的名称 我想:Android 如何在GridView布局中将TextView添加到ImageView中?,android,android-gridview,Android,Android Gridview,我需要一个GridView,但在每个网格中,上面/里面都会有一个ImageView和TextView 它将类似于每个网格中的项目图像,以及图像上项目的名称 我想: public View getView(int position, View convertView, ViewGroup parent) { ImageView imageView; if (convertView == null) { // if it's not recycled, initialize
public View getView(int position, View convertView, ViewGroup parent) {
ImageView imageView;
if (convertView == null) { // if it's not recycled, initialize some
// attributes
imageView = new ImageView(mContext);
imageView.setLayoutParams(new GridView.LayoutParams(300, 300));
imageView.setScaleType(ImageView.ScaleType.FIT_XY);
imageView.setPadding(0, 0, 0, 0);
} else {
imageView = (ImageView) convertView;
}
imageView.setImageResource(mThumbIds[position]);
TextView nameView = new TextView(mContext);
nameView.setText("Name");
nameView.setTextSize(20);
parent.addView(nameView);
return imageView;
}
在我的网格视图适配器中。但我不能把它加在这里。我还尝试将其添加到ImageView中,但由于它不是一个视图组,所以无法实现
更新:
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater inflater = LayoutInflater.from(mContext);
ViewHolder holder;
if (convertView == null) { // if it's not recycled, initialize some
// attributes
convertView = inflater.inflate(R.layout.gridviewitem, null, true);
holder = new ViewHolder();
holder.image = (ImageView) convertView
.findViewById(R.id.gridViewItemImage);
holder.name = (TextView) convertView
.findViewById(R.id.gridViewItemName);
holder.price = (TextView) convertView
.findViewById(R.id.gridViewItemPrice);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
holder.image.setImageResource(mThumbIds[position]);
holder.name.setText("Item " + String.valueOf(position));
holder.price.setText("$15");
return convertView;
}
这解决了我的问题创建一个包含
ImageView
和TextView的RelativeLayout
,其中TextView的底边与ImageView的底边对齐
<RelativeLayout ...>
<ImageView ...>
<TextView ...
android:layout_alignBottom="id of the imageview"> // or to top
</RelativeLayout>
//或是达到顶峰
在适配器的getView
方法中放大此布局。为了扩展userSeven7s的答案,您应该返回RelativeLayout
,而不是ImageView
,以便GridView
将RelativeLayout
作为直接子项,而不是ImageView
和RelativeLayout可以有TextView和ImageView等
您可以通过以下方法获取RelativeLayout的对象:
RelativeLayout rel = (RelativeLayout)View.inflate(R.layout.YOUR_RELATIVE_LAYOUT_XML_HERE);
R.layout.layout\u name或R.id.layout\u id?很抱歉,它必须是layout而不是id。在此之后,如果您正在使用XML文件,您的XML文件的名称应该会出现,否则您可以动态创建RelativeLayout并将视图放入其中,但这会非常麻烦。在扩大布局后,我应该返回什么?Relativelayouts将是gridview的项目。因此,返回relativelayout引用。
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content" >
<ImageView
android:id="@+id/grid_outer_image"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:src="@drawable/image_border" />
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true" >
<TextView
android:id="@+id/grid_inner_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="some text" />
</RelativeLayout>
</RelativeLayout>