2

GridView が必要ですが、各グリッドには、その上/内側に ImageView と TextView があります。

各グリッドのアイテム画像のようになり、画像上のアイテムの名前になります。

私はトリンです:

    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に追加しようとしましたが、ViewGroupではないため、達成できませんでした。

アップデート:

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

これは私の問題を解決しました

4

3 に答える 3

5

RelativeLayoutと TextViewを含む を作成し、ImageViewTextView の下端を下端に揃えImageview'sます。

<RelativeLayout ...>
    <ImageView ...>
    <TextView ...
      android:layout_alignBottom="id of the imageview"> // or to top
</RelativeLayout>

getViewアダプターのメソッドでこのレイアウトを膨らませます。

于 2012-06-19T13:30:14.783 に答える
4
<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>
于 2013-05-03T11:26:45.183 に答える
0

userSeven7s の回答を拡張するために、RelativeLayout代わりに を返す必要があります。これにより、直接の子である代わりに、RelativeLayout が TextView や ImageView などを持つ ことができます。次の方法で RelativeLayout のオブジェクトを取得できます。 ImageViewGridViewRelativeLayoutImageView

RelativeLayout rel = (RelativeLayout)View.inflate(R.layout.YOUR_RELATIVE_LAYOUT_XML_HERE);
于 2012-06-19T13:45:35.957 に答える