【问题标题】:Changing background of a single row of gridview in android在android中更改单行gridview的背景
【发布时间】:2013-02-18 06:57:28
【问题描述】:

我目前正在开发一个 android 应用程序,该应用程序需要显示一个书架,其中每行最多包含 3 个图像。我为此使用了gridview。但是我被困在一个地方,我无法在gridview中更改整行的背景。谁能告诉我该怎么做?

gridview使用的适配器

private class SampleGridAdapter extends BaseAdapter{

    private Context context;
    private int[] images = {"R.drawable.img1","R.drawable.img2","R.drawable.img3","R.drawable.img4","R.drawable.img5","R.drawable.img6","R.drawable.img7"};
    public SampleGridAdapter(Context context) {
        super();
        this.context = context;

    }
    @Override
    public int getCount() {
        // TODO Auto-generated method stub
        return images.length;
    }
    @Override
    public Object getItem(int arg0) {
        // TODO Auto-generated method stub
        return null;
    }

    @Override
    public long getItemId(int arg0) {
        // TODO Auto-generated method stub
        return 0;
    }

    @Override
    public View getView(int arg0, View arg1, ViewGroup arg2) {
        // TODO Auto-generated method stub

        View v = null;
        ImageView coverImageView;

        LayoutInflater inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

            v = inflater.inflate(R.layout.bookgrid, null);
            coverImageView = (ImageView) v.findViewById(R.id.coverImageView);   
            coverImageView.setImageResource(images[position]);


            coverImageView.setScaleType(ImageView.ScaleType.FIT_XY);

        return v;
    }
}

bookgrid.xml

<?xml version="1.0" encoding="utf-8"?>
 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/shelfimage" >

<ImageView
    android:id="@+id/coverImageView"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:paddingBottom="0dp"
    android:paddingLeft="25dp"
    android:paddingTop="6dp"
    android:src="@drawable/ic_launcher" />
 </RelativeLayout>

我在 gridview 声明中将列数设置为 3。在这里,我将 xml 文件中的背景设置为 android:background="@drawable/shelfimage"。但它是为每个项目单独设置背景......我想为每一行设置一个图像作为背景(有 3 个项目)......

【问题讨论】:

  • 单行是什么意思!! GridView 提供点击一个项目
  • 您确定不想要每行包含“3”个项目的列表视图吗?
  • @Sameer - 我知道 gridview 提供点击一个项目...但我想在背景提供一个架子图像,这样它看起来像一个书架...

标签: android android-layout gridview android-gridview


【解决方案1】:

您可以查看this 示例,它会对您有所帮助。

【讨论】:

    【解决方案2】:

    答案是我对你问题的理解。

    如果在这种情况下,您正在为 gridview 使用一些适配器,在适配器类和 getView 方法中检查位置并将颜色设置为您正在膨胀的布局。在适配器类的getview方法中,可以针对特定位置更改膨胀视图的bg。

    如果您使用适配器实现了视图,则逻辑可以正常工作。

    【讨论】:

    • 感谢您的回复....根据您的逻辑,我可以更改单个网格项目的背景....但我需要知道是否有任何方法可以为一整行添加背景在网格视图中..
    • 是的,这取决于您如何设计 UI/行。如果您粘贴带有 question 的代码。会有帮助的。
    【解决方案3】:

    我认为实现这一点的唯一方法是为 gridview 设置在垂直方向(或两者之一)重复的背景图像,示例代码:

    Bitmap bmp = BitmapFactory.decodeResource(getResources(), R.drawable.bg_image);
    BitmapDrawable bitmapDrawable = new BitmapDrawable(bmp);
    bitmapDrawable.setTileModeXY(TileMode.REPEAT, TileMode.REPEAT);
    gridView.setBackgroundDrawable(bitmapDrawable);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-28
      • 1970-01-01
      • 2012-10-31
      • 2011-04-29
      相关资源
      最近更新 更多