簡體   English   中英

Android GridView 不顯示圖像

[英]Android GridView not showing images

我制作了一個帶有GridViewImageAdapter ,但它沒有顯示里面的圖像。 我嘗試更改numColumnscolumnWidth和其他屬性,但沒有成功。 在 Android Studio xml 設計面板中,我可以看到我的 Gridview。

這是我的gridview布局文件中的xml

 <GridView
    android:id="@+id/gridview"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_below="@+id/linear_buttons"
    android:layout_above="@+id/btnSearch"
    android:layout_centerVertical="true"
    android:layout_centerHorizontal="true"
    android:background="@null"
    android:columnWidth="120dp"
    android:gravity="center"
    android:numColumns="auto_fit"
    android:stretchMode="columnWidth" />

這是我的適配器:

public class CustomGridViewAdapter extends BaseAdapter {
private final Context mContext;

public CustomGridViewAdapter(Context c) {
    mContext = c;
}

public int getCount() {
    return mThumbIds.length;
}

public Object getItem(int position) {
    return null;
}

public long getItemId(int position) {
    return 0;
}

// create a new ImageView for each item referenced by the Adapter
public View getView(int position, View convertView, ViewGroup parent) {
    ImageView imageView;
    if (convertView == null) { 
        imageView = new ImageView(mContext);
        imageView.setLayoutParams(new GridView.LayoutParams(R.dimen.grid_dimens_width, R.dimen.grid_dimens_height));
        imageView.setScaleType(ImageView.ScaleType.CENTER);
        imageView.setPadding(1, 5, 1, 1);
    } else {
        imageView = (ImageView) convertView;
    }

    imageView.setImageResource(mThumbIds[position]);
    return imageView;
}

private final Integer[] mThumbIds = {
        R.drawable.grid_agapis, R.drawable.grid_asteies, R.drawable.grid_auto,
        R.drawable.grid_gamos, R.drawable.grid_goneis,
};

我使用以下代碼設置適配器:

GridView gridview = (GridView) findViewById(R.id.gridview);
    gridview.setAdapter(new CustomGridViewAdapter(this));
    gridview.setOnItemClickListener(this);

你能解釋一下問題出在哪里嗎? 謝謝你。

imageView.setLayoutParams(new GridView.LayoutParams(R.dimen.grid_dimens_width,
                                                    R.dimen.grid_dimens_height));

使用這行代碼,您試圖將抓取的可繪制對象的大小限制為分別等於grid_dimens_widthgrid_dimens_height的固定寬度和高度。

但實際上使用R.dimen.foo不會返回foo的值,而是返回生成的資源本身的 integer 值,這可能是一個大數字(例如 -21893103 或 33238590)。屏幕上什么都沒有,因為圖像是:

  • 太大(在正資源值 33238590 的情況下)所以你看到它的小像素
  • 或太小(在負資源值 -21893103 的情況下),因為它的大小為零。

您需要做的是使用getDimention()獲取dimen資源並將資源 ID 傳遞給它。

要將其應用於您的代碼:

代替:

imageView.setLayoutParams(new GridView.LayoutParams(R.dimen.grid_dimens_width,
                                                    R.dimen.grid_dimens_height));

和:

imageView.setLayoutParams(new GridView.LayoutParams(
                  (int) mContext.getResources().getDimension(R.dimen.grid_dimens_width),
                  (int) mContext.getResources().getDimension(R.dimen.grid_dimens_height)));

結果:

在此處輸入圖像描述

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM