我不明白为什么会这样,以及如何找出问题所在。
真的很奇怪的行为。如果我在清单中设置android:targetSdkVersion="16"
,则会显示GridView
滚动延迟。没有它,如果只定义android:minSdkVersion="8"
,则平滑滚动。
使用Android 4.0.4在设备上进行测试。
我有一些像这样的嵌套LinearLayout
:
<LinearLayout android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_weight="1"
/>
其中有一列GridView
:
<GridView android:id="@+id/grid_0"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:numColumns="1"
android:background="@android:color/transparent"
android:listSelector="@android:color/black"
android:fastScrollAlwaysVisible="false"
android:fastScrollEnabled="false"
/>
它只包含15个ImageView
个。部分ImageAdapter
代码用于GridView
:
public View getView(int position, View convertView, ViewGroup parent) {
ImageView imageView;
if (convertView == null) {
imageView = new ImageView(mContext);
if(largeScreen)
imageView.setLayoutParams(new GridView.LayoutParams(getPixels(128), getPixels(72), Gravity.CENTER));
else
imageView.setLayoutParams(new GridView.LayoutParams(getPixels(64), getPixels(36), Gravity.CENTER));
} else {
imageView = (ImageView) convertView;
}
imageView.setImageResource(images[position]); // images - Integer drawables array
imageView.setBackgroundColor(Color.BLACK);
boolean contains = false; // little for-loop here
if(contains == 0)
imageView.setAlpha(1.0f);
else
imageView.setAlpha(0.3f);
}
return imageView;
}
private int getPixels(int dipValue){
int px = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dipValue, metrics);
return px;
}