【问题标题】:Why GridView is showing only one column?为什么 GridView 只显示一列?
【发布时间】:2013-11-20 12:22:22
【问题描述】:

我正在创建一个动态的 GridVew 来显示一个图标和一些文本。我希望至少有 2 列,但它只显示一列,就像 ListView 一样。

这是我的 GridView:

<?xml version="1.0" encoding="utf-8"?>
<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" >

</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" >

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

<TextView
    android:id="@+id/row_label"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@+id/label"
    android:textSize="10sp"
    android:maxLines="2" >
</TextView>

</LinearLayout> 

每一行都在我的自定义 ArrayAdapter 中膨胀:

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    View rowView = inflater.inflate(R.layout.rowlayout, parent, false);
    TextView textView = (TextView) rowView.findViewById(R.id.row_label);
    ImageView imageView = (ImageView) rowView.findViewById(R.id.row_icon);
    textView.setText(values[position].getName());

    asyncDownloadAndSetImage(values[position].getInfo().getThumbnail(), imageView);

    return rowView;
}

试图调整布局,但它仍然只显示在这样的一列上:

【问题讨论】:

    标签: android gridview


    【解决方案1】:

    你的问题可能是

    //GridView 
    android:columnWidth="100dp"
    
    //ImageView
    android:layout_width="150px"
    android:layout_height="150px"
    

    图像大于您在每列大小中放置的空间。

    Test 测试这些更改

    在行中。

    <?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" >
    
    <ImageView
        android:id="@+id/row_icon"
        android:layout_width="100px"
        android:layout_height="100px"
        android:layout_marginRight="50px"
        android:src="@drawable/ic_launcher" >
    </ImageView>
    
    <TextView
        android:id="@+id/row_label"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@+id/label"
        android:textSize="10sp"
        android:maxLines="2" >
    </TextView>
    
    </LinearLayout>
    

    【讨论】:

    • 我尝试使用较小的图像但没有成功。我将图像缩小到 10dp,但仍然显示在单列上。显示如下:!Imgur
    • 把你的LinearLayout改为垂直
    【解决方案2】:

    问题是我的活动扩展了ListActivity 而不是Activity,因为这是从ListView 转换而来的

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-12-28
      • 2018-02-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多