J'ai simple GridView (avec une colonne et six lignes), qui affiche ImageView avec TextView dans la cellule (je crée un adaptateur). Comment étirer les lignes pour remplir toute la hauteur de l'écran? Maintenant, j'ai un peu d'espace sous les cellules ...
main.xml
<LinearLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:layout_width="fill_parent"
Android:layout_height="fill_parent"
Android:orientation="horizontal">
<LinearLayout Android:layout_height="fill_parent"
Android:layout_width="150dp"
Android:orientation="vertical"
Android:id="@+id/left">
<include layout="@layout/menu_grid"></include>
</LinearLayout>
<LinearLayout Android:layout_height="fill_parent"
Android:layout_width="fill_parent"
Android:orientation="vertical"
Android:id="@+id/right">
<ImageView Android:src="@drawable/image"
Android:layout_height="wrap_content"
Android:layout_width="wrap_content"
Android:id="@+id/imageMain"
Android:layout_gravity="center">
</ImageView>
</LinearLayout>
menu_grid.xml
<LinearLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:layout_width="fill_parent" Android:layout_height="fill_parent">
<GridView Android:layout_height="wrap_content"
Android:layout_width="fill_parent"
Android:id="@+id/gridView"
Android:padding="10dp"
Android:verticalSpacing="10dp"
Android:horizontalSpacing="10dp"
Android:numColumns="1"
Android:columnWidth="100dp"
Android:stretchMode="columnWidth"
Android:gravity="center"></GridView>
item.xml
<LinearLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:layout_width="wrap_content" Android:layout_height="wrap_content"
Android:orientation="vertical" Android:gravity="fill_horizontal">
<ImageView Android:src="@drawable/icon"
Android:layout_height="70dp" Android:id="@+id/imageIcon"
Android:layout_width="70dp" Android:layout_gravity="center_horizontal"></ImageView>
<TextView Android:id="@+id/textIcon" Android:text="TextView"
Android:layout_gravity="center" Android:layout_height="wrap_content"
Android:layout_width="wrap_content"></TextView>
ImageAdapter.Java
public class ImageAdapter extends BaseAdapter {
//....some code
//....
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View view;
if (convertView == null) {
LayoutInflater inflater = (LayoutInflater)_context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
view = inflater.inflate(R.layout.item, null);
TextView text = (TextView) view.findViewById(R.id.textIcon);
text.setText(labels[position]);
ImageView image = (ImageView) view.findViewById(R.id.imageIcon);
image.setImageResource(icons[position]);
} else {
view = convertView;
}
return view;
}
}
D'après ce que j'ai compris, la question est de savoir si j'ai 6 rangées de données à renseigner dans gridView, comment puis-je faire en sorte que ces 6 rangées remplissent tout l'écran, au lieu d'afficher 6 rangées et un espace vide sous la dernière rangée.
Pour ce faire, vous devez définir la hauteur minimale de la présentation de l’élément gridView (dans votre cas, son item.xml) sur (hauteur de l’écran)/6, où 6 représente le (nombre de lignes à remplir). Cette hauteur minimale peut être définie dans l'adaptateur que vous utilisez.
Pour trouver la hauteur de l'écran de l'appareil:
DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
int width = metrics.widthPixels;
int height = metrics.heightPixels;
trouver ces valeurs dans l'activité et les rendre publiques statiques et les utiliser dans l'adaptateur, j'ai eu un problème pour trouver ces valeurs dans la classe d'adaptateur
puis pour régler la hauteur minimale:
view = inflater.inflate(R.layout.item, null);
view.setMinimumHeight(GridViewActivity.height/6);
J'ai essayé après avoir vu le message et cela a parfaitement fonctionné.
Si vous souhaitez simplement augmenter l’espace entre les lignes. Vous pouvez utiliser le remplissage, cela devrait fonctionner. Vous pouvez définir le remplissage via XML ou par programme en fonction de vos besoins.
// this you can set inside your view.
Android:paddingLeft="5px"
Android:paddingRight="5px"
Android:paddingTop="10px"
Android:paddingBottom="10px"
// this you can set to your any widgets like TextView/Layouts/Buttons etc..
setPadding(top, left, bottom, right);
Étendez une mise en page en spécifiant Framelayout, puis substituez la méthode onMeasure
.
public class CameraView extends FrameLayout
public TextView titleView;
public CameraView(Context context,AttributeSet attrs) {
super(context, attrs)
titleView = rootView.findViewById(R.id.titleView);
}
@Override
public void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
super.onMeasure(widthMeasureSpec, widthMeasureSpec);
}
}
Vous pouvez ensuite utiliser cette vue dans votre BaseAdapter et définir les layout_width
et layout_height
sur match_parent
.