セルにTextViewを含むImageViewを表示する(1つの列と6つの行を含む)単純なGridViewがあります(アダプターを作成します)。画面全体の高さを満たすように行を伸ばす方法は??今、私はセルの下にいくつかのスペースがあります...
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;
}
}
私が理解したところ、問題は、gridViewに6行のデータを入力する場合、最後の行の下に6行と空のスペースを表示する代わりに、これらの6行を画面全体に表示するにはどうすればよいかということです。
これを実現するには、gridViewアイテムレイアウトの最小の高さ(この場合はitem.xml)を(画面の高さ)/ 6に設定する必要があります。ここで、6は(入力する必要のある行数)です。この最小の高さは、使用しているアダプターで設定できます。
デバイスの画面の高さを見つけるには:
DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
int width = metrics.widthPixels;
int height = metrics.heightPixels;
アクティビティでこれらの値を見つけ、それらをpublic staticにしてアダプターで使用します。アダプタークラスでこれらの値を見つけるのに問題がありました。
次に、最小の高さを設定します。
view = inflater.inflate(R.layout.item, null);
view.setMinimumHeight(GridViewActivity.height/6);
投稿を見た後私はこれを試しました、そしてそれは完全に働きました。
行間のスペースを増やしたいだけの場合は、パディングを使用できます。 xmlを介して、または要件に基づいてプログラムでパディングを設定できます。
// 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);
Framelayoutなどのレイアウトを拡張してから、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);
}
}
次に、BaseAdapterでこのビューを使用して、layout_width
およびlayout_height
をmatch_parent
に設定できます。