2012-06-19 80 views
2

我需要一個GridView,但是在每個網格中,其上會有一個ImageView和TextView。如何將TextView添加到GridView佈局中的ImageView中?

它將像每個網格中的項目圖像和圖像上的項目名稱。

我特林:

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,我無法實現。

UPDATE:

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

這解決了我的問題

回答

5

創建RelativeLayout包含ImageView和TextView的,用的TextView的與Imageview's底部邊緣對齊底部邊緣。

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

在適配器的getView方法中展開此佈局。

+0

膨脹的佈局後,我應該怎麼回報? – Burak

+0

Relativelayouts將是您的GridView的項目。因此請返回相關佈局參考。 – Ronnie

0

只是爲了延長userSeven7s的回答,您應該返回的RelativeLayout代替ImageView,使GridViewRelativeLayout,因爲它是直接的孩子,而不是ImageView和RelativeLayout的可以的TextView和ImageView的等
可以獲取對象通過下面的方法的RelativeLayout的:

RelativeLayout rel = (RelativeLayout)View.inflate(R.layout.YOUR_RELATIVE_LAYOUT_XML_HERE); 
+0

R.layout.layout_name或R.id.layout_id? – Burak

+0

對不起,它必須是佈局沒有ID。之後,如果您正在使用XML文件,那麼您的XML文件的名稱應該會出現,否則您可以動態創建RelativeLayout並將視圖放入其中,但這非常麻煩。 – noob

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> 
相關問題