2013-11-20 3 views
0

Я создаю динамически GridVew для отображения значка и некоторого текста. Я хочу иметь как минимум 2 столбца, но он отображает один столбец, как и ListView.Почему GridView показывает только один столбец?

Это мой 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> 

Каждая строка inlfated в моей пользовательской 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; 
} 

Пробовал настройте макеты, но он по-прежнему отображается только в одном столбце:

Imgur

ответ

0

Проблема заключалась в том, что моя деятельность расширялся ListActivity не Activity как это был преобразован из ListView

0

Возможно, ваша проблема

//GridView 
android:columnWidth="100dp" 

//ImageView 
android:layout_width="150px" 
android:layout_height="150px" 

Изображение больше пространства, что вы положили в размер каждого столбца.

Тест Проверить эти изменения с помощью

в строке.

<?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> 
+0

Я попытался с меньшим изображения без успеха. Я сжимал изображение до 10dp, но его значение отображалось на одном столбце. Он отображается следующим образом:! [Imgur] (http://i.imgur.com/LR9NMOi.png) – ftraian

+0

изменить вас LinearLayout на вертикальную – Clebao

Смежные вопросы