我以編程的方式創建了一個GridView的圖像在一個對話框中使用。如果我將列設置爲自動調整,那麼無論圖像的大小和屏幕大小如何,我總是會得到兩列。 如果我強制列的數量是固定的,那麼它可以工作,但我無法避免圖像在特定的屏幕尺寸上重疊,所以自動管理列數會更好。 甚至更多,當我嘗試設置streching時,它根本不顯示任何東西!GridView只顯示兩列
我ImageAdapter:
public class ImageAdapter extends BaseAdapter {
private Context mContext;
// Constructor
public ImageAdapter(Context c){
mContext = c;
}
public int getCount() {
return (IconC.Res.length);
}
public Object getItem(int position) {
return (IconC.Res[position]);
}
public long getItemId(int position) {
return position;
}
public View getView(int position, View convertView, ViewGroup parent) {
ImageView imageView;
if (convertView == null) {
imageView = new ImageView(mContext);
imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
imageView.setLayoutParams(new GridView.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
} else {
imageView = (ImageView) convertView;
}
imageView.setImageResource(IconC.Res[position]);
return (imageView);
}
}
以及創建該對話的功能(即與.show別處稱爲())
private void createPopUp() {
d_icons = new Dialog(this);
GridView gv_icons = new GridView(this);
// gv_icons.setNumColumns(GridView.AUTO_FIT); // autofit disabled, shows ONLY TWO COLUMNS
gv_icons.setNumColumns(4); // instead, autofit forced, now it works, but I don't want it fixed!
gv_icons.setGravity(Gravity.CENTER);
gv_icons.setHorizontalSpacing(3);
gv_icons.setVerticalSpacing(1);
// gv_icons.setStretchMode(GridView.STRETCH_SPACING); // stretching disabled, shows ZERO COLUMNS
gv_icons.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
gv_icons.setAdapter(new ImageAdapter(this));
gv_icons.setOnItemClickListener(new AdapterView.OnItemClickListener() {
public void onItemClick (AdapterView<?> parent, View view, int position, long id) {
eventIcons.set(selectedItem, position);
updateEventView();
d_icons.dismiss();
}
});
d_icons.setTitle(R.string.text_chooseicon);
d_icons.addContentView(gv_icons, new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
d_icons.setCancelable(true);
}
任何人都可以找出爲什麼出現這種情況?謝謝!!
下面是它的出現與4個固定欄目:i50.tinypic.com/2ebdfec.png
這裏的它是如何與自動調整:i50.tinypic.com/25jxo9s.png
這裏在水平選項卡上自動安裝的佈局:i49.tinypic.com/23r7qj5.png
這正是我的問題:4列在我的測試屏幕上保持得很好,兩個在圖像之間創建了很多空白區域。所以看起來autofit不起作用。 下面是它在4個固定列中的顯示方式: http://i50.tinypic.com/2ebdfec.png 以下是自動調整的方式: http://i50.tinypic.com/25jxo9s.png –
autofit應該工作正常。因爲如果你修正了沒有列,它會在選項卡上看起來很尷尬。所以請使用autofit。嘗試調整圖像大小。它會幫助你。 – Rohit
我的問題正是你建議我的:我*希望*使用autofix,但儘管圖像已經很小(已調整大小),但它不起作用。代碼中必須存在一些缺陷。 –