GridView滚动取决于目标sdk版本?

时间:2014-11-16 11:34:23

标签: android gridview

我不明白为什么会这样,以及如何找出问题所在。

真的很奇怪的行为。如果我在清单中设置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;
}

0 个答案:

没有答案