困っている! GridLayoutManagerを使用して2つの列といくつかの行を実現するこのRecyclerViewがあります。しかし、これが私の問題です:私はこのRecyclerViewに最大8つのアイテムを持ち、画面サイズに合わせてそれらを合わせたいです
これまでのところ私はこれを持っています:
このコードを使用して:
Rect rectangle = new Rect();
Window window = ((Activity)context).getWindow();
window.getDecorView().getWindowVisibleDisplayFrame(rectangle);
int statusBarHeight = rectangle.top;
int contentViewTop =
window.findViewById(Window.ID_Android_CONTENT).getTop();
int titleBarHeight= contentViewTop - statusBarHeight;
final TypedArray styledAttributes = getContext().getTheme().obtainStyledAttributes(
new int[] { Android.R.attr.actionBarSize });
int mActionBarSize = (int) styledAttributes.getDimension(0, 0);
styledAttributes.recycle();
int softButtonsHeight = 0;
DisplayMetrics metrics = new DisplayMetrics();
((Activity)context).getWindowManager().getDefaultDisplay().getMetrics(metrics);
DisplayMetrics realMetrics = new DisplayMetrics();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
((Activity)context).getWindowManager().getDefaultDisplay().getRealMetrics(realMetrics);
if(realMetrics.heightPixels > metrics.heightPixels){
softButtonsHeight = realMetrics.heightPixels - metrics.heightPixels;
}
}
ImageView img_Logo = (ImageView)rootView.findViewById(R.id.img_logo_detalhe);
float logoHeight = 0;
//convertendo na mão tamanho do sponsor
if(img_Logo.getVisibility() != GONE) {
logoHeight = 100 * context.getResources().getDisplayMetrics().density;
}
double sizeInPx = (metrics.heightPixels - titleBarHeight - softButtonsHeight - mActionBarSize - logoHeight) / Math.round(list.size() / 2D);
itensAdapter = new OptionItensAdapter(context, list, (int)sizeInPx);
rvOptions.setAdapter(itensAdapter);
と内部OptionItensAdapterコンストラクターで私のonBindViewHolder
:
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, sizeInPx);
holder.imageButton.setLayoutParams(params);
これを達成するためのアイデアはありますか?前もって感謝します。
このOnBindViewHolderコードを見て、必要に応じて変更します。D
@Override
public void onBindViewHolder(ViewHolder viewHolder, final int position) {
final int pos = position;
try {
//
Resources r = activity.getResources();
int px = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 150, r.getDisplayMetrics()); // i have bottom tabbar so yf you dont have any thing like this just leave 150 to 0.I think in your case height of image view an your top(Pifer)
//this change height of rcv
DisplayMetrics displaymetrics = new DisplayMetrics();
activity.getWindowManager().getDefaultDisplay().getMetrics(displaymetrics);
int height = displaymetrics.heightPixels;
int width = displaymetrics.widthPixels;
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
params.height = (height - px) / 5; //height recycleviewer (there are 5 rows so divide by 5 but i think in your case there are 4 rows so divide by 4)
viewHolder.itemView.setLayoutParams(params);
viewHolder.nameTxt.setText(totalList.get(position).getName());
viewHolder.icon.setImageResource(totalList.get(position).getIcon());
// viewHolder.background.setBackground(ContextCompat.getDrawable(context, totalList.get(position).getBackground()));
} catch (Exception e) {
e.printStackTrace();
}
}
このviewHolderを投稿するだけで、すべてのアイテムが表示されます。
public static class ViewHolder extends RecyclerView.ViewHolder {
public TextView nameTxt;
public RelativeLayout background;
public ImageView icon;
public ViewHolder(View itemLayoutView) {
super(itemLayoutView);
nameTxt = (TextView) itemLayoutView.findViewById(R.id.menu_label);
background = (RelativeLayout) itemLayoutView.findViewById(R.id.menu_background);
icon = (ImageView) itemLayoutView.findViewById(R.id.menu_icon);
}
私の提案は、RecyclerViewの代わりにこれに似たレイアウトを使用することです。それはどの画面にも適合します。レイアウトは、コードなしで必要な調整をすべて行います。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:orientation="vertical"
Android:weightSum="100">
<ImageView
Android:layout_width="match_parent"
Android:layout_height="0dp"
Android:layout_weight="20"
Android:src="@Android:drawable/sym_def_app_icon" />
<LinearLayout
Android:layout_width="match_parent"
Android:layout_height="0dp"
Android:layout_weight="20"
Android:orientation="horizontal"
Android:weightSum="100">
<ImageView
Android:layout_width="0dp"
Android:layout_height="match_parent"
Android:layout_weight="50"
Android:src="@Android:drawable/sym_def_app_icon" />
<ImageView
Android:layout_width="0dp"
Android:layout_height="match_parent"
Android:layout_weight="50"
Android:src="@Android:drawable/sym_def_app_icon" />
</LinearLayout>
<LinearLayout
Android:layout_width="match_parent"
Android:layout_height="0dp"
Android:layout_weight="20"
Android:orientation="horizontal"
Android:weightSum="100">
<ImageView
Android:layout_width="0dp"
Android:layout_height="match_parent"
Android:layout_weight="50"
Android:src="@Android:drawable/sym_def_app_icon" />
<ImageView
Android:layout_width="0dp"
Android:layout_height="match_parent"
Android:layout_weight="50"
Android:src="@Android:drawable/sym_def_app_icon" />
</LinearLayout>
<LinearLayout
Android:layout_width="match_parent"
Android:layout_height="0dp"
Android:layout_weight="20"
Android:orientation="horizontal"
Android:weightSum="100">
<ImageView
Android:layout_width="0dp"
Android:layout_height="match_parent"
Android:layout_weight="50"
Android:src="@Android:drawable/sym_def_app_icon" />
<ImageView
Android:layout_width="0dp"
Android:layout_height="match_parent"
Android:layout_weight="50"
Android:src="@Android:drawable/sym_def_app_icon" />
</LinearLayout>
<LinearLayout
Android:layout_width="match_parent"
Android:layout_height="0dp"
Android:layout_weight="20"
Android:orientation="horizontal"
Android:weightSum="100">
<ImageView
Android:layout_width="0dp"
Android:layout_height="match_parent"
Android:layout_weight="50"
Android:src="@Android:drawable/sym_def_app_icon" />
<ImageView
Android:layout_width="0dp"
Android:layout_height="match_parent"
Android:layout_weight="50"
Android:src="@Android:drawable/sym_def_app_icon" />
</LinearLayout>
</LinearLayout>
ここでは、GridLayout
またはConstraint
レイアウトの方がはるかに優れています。
RecyclerView
は(その名前が示すように)リサイクル用です。多くのビュー/子があり、画面上の少数のみがメモリを使用していることを確認する必要がある場合は、リサイクルを使用する必要があります。
代わりにConstraintLayout
を使用すると、各ビューを個別に含めて、グリッドパターンを作成するためにそれらを相互にどのように関連付けるかを定義できます。
以下の私の例のようなGridLayout
は、リサイクルせずにアイテムを整理します。
<GridLayout Android:id="@+id/..."
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:layout_gravity="fill_horizontal".
Android:orientation="horizontal"
Android:columnCount="2"
Android:rowCount="4">
<OptionItem ...
Android:weight="1"
Android:layout_width="0dp"
Android:layout_height="wrap_content" />
<OptionItem ...
Android:weight="1"
Android:layout_width="0dp"
Android:layout_height="wrap_content" />
<OptionItem ...
Android:weight="1"
Android:layout_width="0dp"
Android:layout_height="wrap_content" />
...
</GridLayout>
コードで、非表示にする8つのボタンの表示を変更します
button8.setVisibility(View.INVISIBLE); //don't use GONE inside the grid
プログラムでアイテムの幅(または高さ)を設定する場合は、useDefaultMargins="true"
とレイアウトパラメータを変更します(- this 回答に従って)
GridLayout.LayoutParams params = (GridLayout.LayoutParams) child.getLayoutParams();
params.width = (parent.getWidth()/parent.getColumnCount()) -params.rightMargin - params.leftMargin;
child.setLayoutParams(params);
8つのアイテムを修正した場合、次のようなアイコンサイズにLinearLayoutおよびSDPライブラリを使用できます。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
xmlns:tools="http://schemas.Android.com/tools"
Android:id="@+id/activity_main"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:orientation="vertical"
tools:context="Android.com.linearlayouthome.MainActivity">
<ImageView
Android:src="@mipmap/ic_launcher"
Android:layout_width="@dimen/_60sdp"
Android:layout_height="@dimen/_60sdp"
Android:layout_gravity="center"/>
<LinearLayout
Android:orientation="vertical"
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:layout_weight="1"
Android:weightSum="4">
<LinearLayout
Android:orientation="horizontal"
Android:layout_width="match_parent"
Android:layout_height="0dp"
Android:layout_weight="1">
<LinearLayout
Android:gravity="center"
Android:orientation="vertical"
Android:layout_weight="1"
Android:layout_width="match_parent"
Android:layout_height="wrap_content">
<ImageView
Android:src="@mipmap/ic_launcher"
Android:layout_width="@dimen/_70sdp"
Android:layout_height="@dimen/_70sdp" />
<TextView
Android:gravity="center_horizontal"
Android:text="Text"
Android:layout_width="match_parent"
Android:layout_height="wrap_content" />
</LinearLayout>
<LinearLayout
Android:gravity="center"
Android:orientation="vertical"
Android:layout_weight="1"
Android:layout_width="match_parent"
Android:layout_height="wrap_content">
<ImageView
Android:src="@mipmap/ic_launcher"
Android:layout_width="@dimen/_70sdp"
Android:layout_height="@dimen/_70sdp" />
<TextView
Android:gravity="center_horizontal"
Android:text="Text"
Android:layout_width="match_parent"
Android:layout_height="wrap_content" />
</LinearLayout>
</LinearLayout>
<LinearLayout
Android:orientation="horizontal"
Android:layout_width="match_parent"
Android:layout_height="0dp"
Android:layout_weight="1">
<LinearLayout
Android:gravity="center"
Android:orientation="vertical"
Android:layout_weight="1"
Android:layout_width="match_parent"
Android:layout_height="wrap_content">
<ImageView
Android:src="@mipmap/ic_launcher"
Android:layout_width="@dimen/_70sdp"
Android:layout_height="@dimen/_70sdp" />
<TextView
Android:gravity="center_horizontal"
Android:text="Text"
Android:layout_width="match_parent"
Android:layout_height="wrap_content" />
</LinearLayout>
<LinearLayout
Android:gravity="center"
Android:orientation="vertical"
Android:layout_weight="1"
Android:layout_width="match_parent"
Android:layout_height="wrap_content">
<ImageView
Android:src="@mipmap/ic_launcher"
Android:layout_width="@dimen/_70sdp"
Android:layout_height="@dimen/_70sdp" />
<TextView
Android:gravity="center_horizontal"
Android:text="Text"
Android:layout_width="match_parent"
Android:layout_height="wrap_content" />
</LinearLayout>
</LinearLayout>
<LinearLayout
Android:orientation="horizontal"
Android:layout_width="match_parent"
Android:layout_height="0dp"
Android:layout_weight="1">
<LinearLayout
Android:gravity="center"
Android:orientation="vertical"
Android:layout_weight="1"
Android:layout_width="match_parent"
Android:layout_height="wrap_content">
<ImageView
Android:src="@mipmap/ic_launcher"
Android:layout_width="@dimen/_70sdp"
Android:layout_height="@dimen/_70sdp" />
<TextView
Android:gravity="center_horizontal"
Android:text="Text"
Android:layout_width="match_parent"
Android:layout_height="wrap_content" />
</LinearLayout>
<LinearLayout
Android:gravity="center"
Android:orientation="vertical"
Android:layout_weight="1"
Android:layout_width="match_parent"
Android:layout_height="wrap_content">
<ImageView
Android:src="@mipmap/ic_launcher"
Android:layout_width="@dimen/_70sdp"
Android:layout_height="@dimen/_70sdp" />
<TextView
Android:gravity="center_horizontal"
Android:text="Text"
Android:layout_width="match_parent"
Android:layout_height="wrap_content" />
</LinearLayout>
</LinearLayout>
<LinearLayout
Android:orientation="horizontal"
Android:layout_width="match_parent"
Android:layout_height="0dp"
Android:layout_weight="1">
<LinearLayout
Android:gravity="center"
Android:orientation="vertical"
Android:layout_weight="1"
Android:layout_width="match_parent"
Android:layout_height="wrap_content">
<ImageView
Android:src="@mipmap/ic_launcher"
Android:layout_width="@dimen/_70sdp"
Android:layout_height="@dimen/_70sdp" />
<TextView
Android:gravity="center_horizontal"
Android:text="Text"
Android:layout_width="match_parent"
Android:layout_height="wrap_content" />
</LinearLayout>
<LinearLayout
Android:gravity="center"
Android:orientation="vertical"
Android:layout_weight="1"
Android:layout_width="match_parent"
Android:layout_height="wrap_content">
<ImageView
Android:src="@mipmap/ic_launcher"
Android:layout_width="@dimen/_70sdp"
Android:layout_height="@dimen/_70sdp" />
<TextView
Android:gravity="center_horizontal"
Android:text="Text"
Android:layout_width="match_parent"
Android:layout_height="wrap_content" />
</LinearLayout>
</LinearLayout>
</LinearLayout>
</LinearLayout>
[〜#〜] sdp [〜#〜] ライブラリを使用すると、さまざまな画面サイズのディメンションファイルを書き込む必要がありません
スクリーンショット:Nexus 4:
Nexus 5X:
Nexus 6:
ビューを画面に固定する必要がある場合は、recyclerViewを使用する必要はありません。ウェイトで遊んで、アイテムを画面に合わせることができます。
あなたのシナリオでは、以下のコードに従うことができます
//llContainer main layout in which you want to put 8 values having orientation vertical
llContainer.setWeightSum(numberofRaws); // It will be 4 if you want to put 8 values
for(int i=1; i<=numberofRaws ; i++ ){
//Inflate One LinearLayout which has height width Match Parent
LinearLayout llRaw = (LinearLayout) LayoutInflater.from(mContext).inflate(R.layout.layout_plain_with_horizontal_orientation, null);
llRaw.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.MATCH_PARRENT, 1.0f));
AddTwoViewForFaw(llRaw);
llContainer.AddView(llRaw);
}
public void AddTwoViewForRaw(LinearLayout llRaw){
View v1 = LayoutInflater.from(getContext()).inflate(R.layout.grideLayout, null);
// Here you can set values for grid layout by v1.findViewbyId()
v1.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT, 1.0f));
llRaw.addView(v1);
View v2 = LayoutInflater.from(getContext()).inflate(R.layout.grideLayout, null);
// Here you can set values for grid layout by v2.findViewbyId()
v2.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT, 1.0f));
llRaw.addView(v2);
}
それがあなたのために働くことを願っています。
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater
.from(parent.getContext())
.inflate(R.layout.item_list, null);
int height = parent.getMeasuredHeight() / 4;
int width = parent.getMeasuredWidth();
view.setLayoutParams(new RecyclerView.LayoutParams(width, height));
return new ViewHolder(view);
}
メニューが動的に変更されない場合、つまりAPIにメニュー設定がある場合、Recyclerview
またはGridView
を使用してこのレイアウトを設定する必要はありません。 LinearLayout
(s)をいくつかの制約と組み合わせて静的レイアウトに入力することを以前に経験しました。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:Android="http://schemas.Android.com/apk/res/Android"
xmlns:app="http://schemas.Android.com/apk/res-auto"
xmlns:tools="http://schemas.Android.com/tools"
Android:id="@+id/content_main"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:orientation="vertical"
Android:weightSum="1">
<ImageView
Android:layout_weight="0.8"
Android:src="@drawable/logo"
Android:layout_width="match_parent"
Android:layout_height="match_parent" />
<LinearLayout
Android:layout_weight="0.2"
Android:weightSum="1"
Android:orientation="vertical"
Android:layout_width="match_parent"
Android:layout_height="match_parent">
<LinearLayout
Android:weightSum="1"
Android:layout_weight="0.25"
Android:orientation="horizontal"
Android:layout_width="match_parent"
Android:layout_height="match_parent">
<LinearLayout
Android:gravity="center"
Android:orientation="vertical"
Android:layout_weight="0.5"
Android:layout_width="match_parent"
Android:layout_height="match_parent">
<ImageView
Android:src="@drawable/free2"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content" />
<TextView
Android:gravity="center_horizontal"
Android:text="this is text"
Android:layout_width="match_parent"
Android:layout_height="wrap_content" />
</LinearLayout>
<LinearLayout
Android:gravity="center"
Android:orientation="vertical"
Android:layout_weight="0.5"
Android:layout_width="match_parent"
Android:layout_height="match_parent">
<ImageView
Android:src="@drawable/free2"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content" />
<TextView
Android:gravity="center_horizontal"
Android:text="this is text"
Android:layout_width="match_parent"
Android:layout_height="wrap_content" />
</LinearLayout>
</LinearLayout>
<LinearLayout
Android:weightSum="1"
Android:layout_weight="0.25"
Android:orientation="horizontal"
Android:layout_width="match_parent"
Android:layout_height="match_parent">
<LinearLayout
Android:gravity="center"
Android:orientation="vertical"
Android:layout_weight="0.5"
Android:layout_width="match_parent"
Android:layout_height="match_parent">
<ImageView
Android:src="@drawable/free2"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content" />
<TextView
Android:gravity="center_horizontal"
Android:text="this is text"
Android:layout_width="match_parent"
Android:layout_height="wrap_content" />
</LinearLayout>
<LinearLayout
Android:gravity="center"
Android:orientation="vertical"
Android:layout_weight="0.5"
Android:layout_width="match_parent"
Android:layout_height="match_parent">
<ImageView
Android:src="@drawable/free2"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content" />
<TextView
Android:gravity="center_horizontal"
Android:text="this is text"
Android:layout_width="match_parent"
Android:layout_height="wrap_content" />
</LinearLayout>
</LinearLayout>
<LinearLayout
Android:weightSum="1"
Android:layout_weight="0.25"
Android:orientation="horizontal"
Android:layout_width="match_parent"
Android:layout_height="match_parent">
<LinearLayout
Android:gravity="center"
Android:orientation="vertical"
Android:layout_weight="0.5"
Android:layout_width="match_parent"
Android:layout_height="match_parent">
<ImageView
Android:src="@drawable/free2"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content" />
<TextView
Android:gravity="center_horizontal"
Android:text="this is text"
Android:layout_width="match_parent"
Android:layout_height="wrap_content" />
</LinearLayout>
<LinearLayout
Android:gravity="center"
Android:orientation="vertical"
Android:layout_weight="0.5"
Android:layout_width="match_parent"
Android:layout_height="match_parent">
<ImageView
Android:src="@drawable/free2"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content" />
<TextView
Android:gravity="center_horizontal"
Android:text="this is text"
Android:layout_width="match_parent"
Android:layout_height="wrap_content" />
</LinearLayout>
</LinearLayout>
<LinearLayout
Android:weightSum="1"
Android:layout_weight="0.25"
Android:orientation="horizontal"
Android:layout_width="match_parent"
Android:layout_height="match_parent">
<LinearLayout
Android:gravity="center"
Android:orientation="vertical"
Android:layout_weight="0.5"
Android:layout_width="match_parent"
Android:layout_height="match_parent">
<ImageView
Android:src="@drawable/free2"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content" />
<TextView
Android:gravity="center_horizontal"
Android:text="this is text"
Android:layout_width="match_parent"
Android:layout_height="wrap_content" />
</LinearLayout>
<LinearLayout
Android:gravity="center"
Android:orientation="vertical"
Android:layout_weight="0.5"
Android:layout_width="match_parent"
Android:layout_height="match_parent">
<ImageView
Android:src="@drawable/free2"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content" />
<TextView
Android:gravity="center_horizontal"
Android:text="this is text"
Android:layout_width="match_parent"
Android:layout_height="wrap_content" />
</LinearLayout>
</LinearLayout>
</LinearLayout>
</LinearLayout>
これは結果です:
なぜRecyclerView
を使用しているのですか?
アイテム数が決まっている場合、GridLayout
が最適なオプションです。 weights
のオブジェクトで遊ぶことができます。
6 LinearLayout
sを画面に合わせる方法を示す例は次のとおりです
<Android.support.v7.widget.GridLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
xmlns:app="http://schemas.Android.com/apk/res-auto"
xmlns:tools="http://schemas.Android.com/tools"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
tools:context="com.waqasansari.hitwithme.main.fragments.Dashboard">
<LinearLayout
Android:id="@+id/myMatches"
Android:layout_width="0dp"
Android:layout_height="0dp"
app:layout_columnWeight="1"
app:layout_rowWeight="1"
app:layout_column="0"
app:layout_row="0"
Android:background="@drawable/border_gray"
Android:orientation="vertical"
Android:gravity="center">
<ImageView
Android:layout_width="80dp"
Android:layout_height="80dp"
Android:src="@drawable/dashboard_my_matches"/>
<TextView
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:text="My Matches"/>
</LinearLayout>
<LinearLayout
Android:id="@+id/requestMatches"
Android:layout_width="0dp"
Android:layout_height="0dp"
app:layout_columnWeight="1"
app:layout_rowWeight="1"
app:layout_column="1"
app:layout_row="0"
Android:background="@drawable/border_gray"
Android:gravity="center"
Android:orientation="vertical">
<ImageView
Android:layout_width="80dp"
Android:layout_height="80dp"
Android:src="@drawable/dashboard_match_requests"/>
<TextView
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:text="Match Requests"/>
</LinearLayout>
<LinearLayout
Android:id="@+id/proShop"
Android:layout_width="0dp"
Android:layout_height="0dp"
app:layout_columnWeight="1"
app:layout_rowWeight="1"
app:layout_column="0"
app:layout_row="1"
Android:background="@drawable/border_gray"
Android:gravity="center"
Android:orientation="vertical">
<ImageView
Android:layout_width="80dp"
Android:layout_height="80dp"
Android:src="@drawable/dashboard_pro_shop"/>
<TextView
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:text="Pro Shops"/>
</LinearLayout>
<LinearLayout
Android:id="@+id/rankings"
Android:layout_width="0dp"
Android:layout_height="0dp"
app:layout_columnWeight="1"
app:layout_rowWeight="1"
app:layout_column="1"
app:layout_row="1"
Android:background="@drawable/border_gray"
Android:gravity="center"
Android:orientation="vertical">
<ImageView
Android:layout_width="80dp"
Android:layout_height="80dp"
Android:src="@drawable/dashboard_rankings"/>
<TextView
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:text="Rankings"/>
</LinearLayout>
<LinearLayout
Android:id="@+id/courtsAndCoaches"
Android:layout_width="0dp"
Android:layout_height="0dp"
app:layout_columnWeight="1"
app:layout_rowWeight="1"
app:layout_column="0"
app:layout_row="2"
Android:background="@drawable/border_gray"
Android:gravity="center"
Android:orientation="vertical">
<ImageView
Android:layout_width="80dp"
Android:layout_height="80dp"
Android:src="@drawable/dashboard_courts_coaches"/>
<TextView
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:text="Courts & Coaches"/>
</LinearLayout>
<LinearLayout
Android:id="@+id/inviteFriends"
Android:layout_width="0dp"
Android:layout_height="0dp"
app:layout_columnWeight="1"
app:layout_rowWeight="1"
app:layout_column="1"
app:layout_row="2"
Android:background="@drawable/border_gray"
Android:gravity="center"
Android:orientation="vertical">
<ImageView
Android:layout_width="80dp"
Android:layout_height="80dp"
Android:src="@drawable/dashboard_invite_friends"/>
<TextView
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:text="Invite Friends"/>
</LinearLayout>
</Android.support.v7.widget.GridLayout>
同様の方法でアイテムを追加できます
this SO answer link でこのような同様の質問にちょうど答えました
基本的に、画面サイズを取得し、それに応じて高さを調整するので、その要点は次のとおりです。
DisplayMetrics displayMetrics = new DisplayMetrics();
getActivity().getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);
if(position == 0) {
holder.itemView.getLayoutParams().width = displayMetrics.width;
holder.itemView.getLayoutParams().height = displayMetrics.height / 8;
} else {
holder.itemView.getLayoutParams().width = displayMetrics.width / 2;
holder.itemView.getLayoutParams().height = displayMetrics.height / 8;
}
カスタムグリッド行を追加してサイズを設定し、画面ごとに自動的に調整される自動調整を設定します