p線形レイアウトで作業していて、ビューの最大高さを設定したいと思います。 「通常の」状況では、ビューで「wrap_content」を使用する必要があります。ただし、状況によっては、レイアウトが望ましくないサイズになる場合があります。その際、高さを最大300dpに制限したいと思います。
レイアウト内のリストが4つのリスト項目を超える場合、以下を使用してビューのサイズを設定しました。
LinearLayout listLayout = (LinearLayout) dialog.findViewById(R.id.listLayout);
if(list.size() > 4){
LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, 300);
listLayout.setLayoutParams(params);
}
documentation を確認すると、適用される測定単位についての手がかりがありません。この状況での測定単位(dp、sp、px、...)は何ですか?
テストを実行すると、値を100に設定しても、リストが目的の高さを超えています。
お知らせ下さい
リンクしたドキュメントによると:ピクセル。 この関数 を参照してください
幅、MATCH_PARENT、WRAP_CONTENT、またはピクセル単位の固定サイズ
使用している関数には明示的なドキュメントがありませんが、ほとんどのパラメーターを持つ関数と同じドキュメントを使用していることを意味します。関数自体はおそらく次のようになります。
LinearLayout.LayoutParams(int width, int height) {
this(width, height, /*some default value*/);
}
つまり、デフォルト値で3パラメータバージョンを呼び出すだけです。
問題が発生した場合のインポートを含む完全なクラスは次のとおりです[email protected]
//usage: int 300dpInPixels = util.convertDpToPixel(300);
import Android.content.res.Resources;
import Android.util.DisplayMetrics;
public class utils {
public static int convertDpToPixel(float dp){
DisplayMetrics metrics = Resources.getSystem().getDisplayMetrics();
float px = dp * (metrics.densityDpi / 160f);
return Math.round(px);
}
}
Davidが言ったように、コードを介したLayoutParamsの設定はピクセル単位で設定されます。 このスレッド のコードを使用して、目的のdpをpxに変換できます。