2
我有我的GridView的问题。它不是滚动到GridView的底部。我使用了Android developer网站的GridView。下面是当我向下滚动时,屏幕底部的样子: 因此,它将切断最后两个网格的底部。不过我已经将填充添加到我的GridView的底部,看起来像这样解决了这个:GridView不能滚动到底部探测
<?xml version="1.0" encoding="utf-8"?>
<GridView
android:id="@+id/gridview"
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:columnWidth="90dp"
android:gravity="center"
android:horizontalSpacing="2dp"
android:numColumns="2"
android:stretchMode="columnWidth"
android:verticalSpacing="1dp"
android:paddingBottom="55dp"
/>
的问题是55dp的填充完全符合我的三星Galaxy S5。但我怀疑这不是其他设备的情况?如果我添加更多的填充,我将在屏幕底部获得永久的白线,即使GridView没有完全滚动。
这里是我实现的GridView类:
public class HomeFragment extends Fragment implements AdapterView.OnItemClickListener {
public HomeFragment() {
// Required empty public constructor
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.grid_layout, container, false);
GridView gridview = (GridView) view.findViewById(R.id.gridview);
gridview.setAdapter(new GridViewAdapter(getActivity()));
gridview.setOnItemClickListener(this);
// Inflate the layout for this fragment
return view;
}
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Toast.makeText(getContext(), "" + position,
Toast.LENGTH_SHORT).show();
}
}
这是我GridViewAdapter类:
public class GridViewAdapter extends BaseAdapter {
private Context mContext;
public GridViewAdapter(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;
DisplayMetrics metrics = Resources.getSystem().getDisplayMetrics();
int screenWidth = metrics.widthPixels;
if (convertView == null) {
// if it's not recycled, initialize some attributes
imageView = new ImageView(mContext);
imageView.setLayoutParams(new GridView.LayoutParams(screenWidth/2, screenWidth/2));
imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
//imageView.setPadding(8, 8, 8, 8);
} else {
imageView = (ImageView) convertView;
}
imageView.setImageResource(mThumbIds[position]);
return imageView;
}
// references to our images
private Integer[] mThumbIds = {
R.drawable.dog, R.drawable.cat,
R.drawable.horse, R.drawable.bunny,
R.drawable.fish, R.drawable.hamster,
R.drawable.hedgehog, R.drawable.bird
};
}
所以我在短的问题是:有没有一种方法,以确保在GridView会无需将填充添加到GridView底部即可完美地适应屏幕,我认为这对所有设备来说都不是相同的填充?