android - 为什么我的 GridView 只显示一列?

标签 android gridview

我不明白为什么无论我做什么,我的 GridView 中只显示 1 列。令人沮丧。

Activity 的xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
          android:layout_width="match_parent"
          android:layout_height="match_parent" 
          android:orientation="vertical">

  <GridView
      android:id="@+id/gridView_album"
      android:layout_width="match_parent"
      android:layout_height="match_parent"
      android:numColumns="2"
      android:verticalSpacing="10dp"
      android:horizontalSpacing="10dp"
      android:stretchMode="columnWidth"
      android:gravity="center" />

</LinearLayout>

对于 GridView 中的每个项目(这在我的适配器中是膨胀的)

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:orientation="vertical" >

  <LinearLayout
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_marginLeft="5dp"
      android:layout_marginRight="5dp"
      android:orientation="vertical" >

    <TextView
        android:id="@+id/textView_albumTitle"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="album title" />

  </LinearLayout>

  <ImageView
      android:id="@+id/imageView1"
      android:layout_width="105dp"
      android:layout_height="100dp"
      android:src="@drawable/abs__ab_share_pack_holo_light" />

  <LinearLayout
      android:layout_width="wrap_content"
      android:layout_height="wrap_content" >

    <ImageView
        android:id="@+id/imageView2"
        android:layout_width="20dp"
        android:layout_height="20dp"
    android:layout_marginLeft="5dp"
    android:layout_marginTop="5dp"      
        android:src="@drawable/abs__ab_solid_light_holo" />

    <ImageView
        android:id="@+id/imageView3"
        android:layout_width="20dp"
        android:layout_height="20dp"
    android:layout_marginLeft="5dp"
    android:layout_marginTop="5dp"      
        android:src="@drawable/abs__ab_solid_light_holo" />

    <ImageView
        android:id="@+id/imageView4"
        android:layout_width="20dp"
        android:layout_height="20dp"
    android:layout_marginLeft="5dp"
    android:layout_marginTop="5dp"      
        android:src="@drawable/abs__ab_solid_light_holo" />

    <ImageView
        android:id="@+id/imageView5"
        android:layout_width="20dp"
        android:layout_height="20dp"
    android:layout_marginLeft="5dp"
    android:layout_marginTop="5dp"      
        android:src="@drawable/abs__ab_solid_light_holo" />

  </LinearLayout>

</LinearLayout>

和我的适配器的 getView

   @Override
        public View getView(int position, View convertView, ViewGroup parent) {
        View v = convertView;

        JsonAlbum jsonAlbum = (JsonAlbum) getItem(position);
        ArrayList<JsonAlbumImage> jsonAlbumImageArray = jsonAlbum.album_image_list;

        if (v == null) {
            LayoutInflater vi = (LayoutInflater) getContext().getSystemService(
                Context.LAYOUT_INFLATER_SERVICE);
            v = vi.inflate(R.layout.album_list_row, null);

        }


        TextView textView_albumTitle = (TextView) v.findViewById(R.id.textView_albumTitle);
        textView_albumTitle.setText(jsonAlbum.title);

        ImageView imageView1 = (ImageView)v.findViewById(R.id.imageView1);
        ImageView imageView2 = (ImageView)v.findViewById(R.id.imageView2);
        ImageView imageView3 = (ImageView)v.findViewById(R.id.imageView3);
        ImageView imageView4 = (ImageView)v.findViewById(R.id.imageView4);
        ImageView imageView5 = (ImageView)v.findViewById(R.id.imageView5);

        ArrayList<ImageView> imageViewList = new ArrayList<ImageView>();
        imageViewList.add(imageView1);
        imageViewList.add(imageView2);
        imageViewList.add(imageView3);
        imageViewList.add(imageView4);
        imageViewList.add(imageView5);

        int imageCount = Math.min( imageViewList.size(), jsonAlbumImageArray.size());
        for(int i=0; i < imageCount; ++i)
        {
            ImageView imageView = imageViewList.get(i);
            imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
            JsonAlbumImage jsonAlbumImage = jsonAlbumImageArray.get(i);
            imageLoader.displayImage(jsonAlbumImage.url_image, imageView, options);
        }

        Log.i("debug", "width: "+ Integer.toString(v.getWidth()));
        return v;
    }

最佳答案

你好,这是我的 Gridview 代码

<GridView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/gridView1"
    android:numColumns="2"
    android:gravity="center"
    android:columnWidth="100dp"
    android:stretchMode="columnWidth"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >

我的图片查看代码:

<ImageView
        android:id="@+id/grid_item_image"
        android:layout_width="150px"
        android:layout_height="150px"
        android:layout_marginRight="50px"
        android:src="@drawable/ic_launcher" >
    </ImageView>

我得到 2 列..让你试试这个属性..

关于android - 为什么我的 GridView 只显示一列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13971876/

相关文章:

android - 完全停止一个android webview

android - TextInputLayout onclick 内的 EditText 需要 2 次点击?!安卓

java - 使用 "requesLocationUpdates()"时出现一些错误

c# - 如何在数据表中添加图像?

android gridview 滚动滞后

android - 如何让 Eclipse 手动连接到 Android 模拟器?

java - 按钮的文本循环遍历字符串数组

java - 有没有办法使用 Universal Image Loader 主动加载照片?

c# - .net c# postback 覆盖绑定(bind)的文本框

javascript - 使用jquery计算gridview中的行总计和总计