У меня проблема с моим GridView. Он не прокручивается до нижней части GridView proberly. Я использовал GridView с сайта Android developer. Вот как выглядит нижняя часть моего экрана, когда я прокручиваю весь путь вниз: Так что он отсекает нижнюю часть последних двух сеток. Однако я решил эту проблему путем добавления отступов в нижней части моего 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 идеально подходит к моему Samsung 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, которое, я полагаю, не будет таким же дополнением для всех устройств?