我Gridview
在 Android 中有一个,其中每个元素都是从 xml 膨胀并包含一个LinearLayout
持有一个ImageView
和一个TextView
。使用GridView
扩展的自定义适配器BaseAdapter
。我看到的是,每一行都和屏幕一样高,而不是仅仅高到足以容纳最大的元素。
以下是相关代码:
网格视图的 xml:
<GridView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/ConSoul"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:numColumns="auto_fit"
android:columnWidth="160dp"
android:horizontalSpacing="20dp"
android:verticalSpacing="0dp"
android:gravity="center"
android:stretchMode="columnWidth" />
元素的 xml (thumbnail.xml):
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="120dp"
android:layout_height="wrap_content"
android:orientation="vertical">
<ImageView
android:id="@+id/screen"
android:layout_height="wrap_content"
android:layout_width="fill_parent"
android:scaleType="fitEnd"/>
<TextView
android:id="@+id/name"
android:layout_height="wrap_content"
android:layout_width="fill_parent"
android:textSize="20dp"
android:textColor="@color/theme"
android:gravity="center_horizontal"/>
</LinearLayout>
适配器getView
方法(mContext
是创建适配器的实例变量,screens 是 a Bitmap[]
,names 是 a String[]
):
public View getView(int position, View convertView, ViewGroup parent) {
View thumbView;
if (convertView == null) { // if it's not recycled, initialize some attributes
thumbView = LayoutInflater.from(mContext).inflate(R.layout.thumbnail, null);
} else {
thumbView = convertView;
}
((ImageView)thumbView.findViewById(R.id.screen)).setImageBitmap(screens[position]);
((TextView)thumbView.findViewById(R.id.name)).setText(names[position]);
return thumbView;
}