web-dev-qa-db-ja.com

android RelativeLayoutはプログラムで高さを変更する

プログラムでレイアウトの高さを変更してみます。 2つのボタンがあります。 1つ目のボタンでレイアウトの位置を変更し、2つ目のボタンで初めての保存位置を取得しようとします。

<RelativeLayout
    Android:id="@+id/popaplayout"
    Android:layout_width="fill_parent"
    Android:layout_height="200dp" >

これは私のレイアウトであり、最初のボタンで私が書いた

RelativeLayout.LayoutParams parms = new RelativeLayout.LayoutParams(
                    RelativeLayout.LayoutParams.FILL_PARENT,
                    RelativeLayout.LayoutParams.FILL_PARENT);
parms.addRule(RelativeLayout.BELOW, R.id.movies_title_layout);
scrollpopap.setLayoutParams(parms);
scrollpopap.setScrollingEnabled(true);

2番目のボタン

RelativeLayout.LayoutParams rel_btn = new RelativeLayout.LayoutParams(
                    ViewGroup.LayoutParams.WRAP_CONTENT, 300);
rel_btn.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM);
scrollpopap.setLayoutParams(rel_btn);
scrollpopap.setScrollingEnabled(false);

xmlファイルには、高さ200dpとプログラムで300を記述しましたが、高さは異なります。プログラムで保存高さを書き込むにはどうすればよいですか?

誰かが解決策を知っているなら、私に感謝してください

22
Beka

最初に200 dpをピクセルに変換します-

final float scale = getContext().getResources().getDisplayMetrics().density;
int pixels = (int) (200 * scale + 0.5f);

その後、プログラムで設定し、

RelativeLayout.LayoutParams rel_btn = new RelativeLayout.LayoutParams(
                    ViewGroup.LayoutParams.WRAP_CONTENT, pixels);
            rel_btn.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM);
            scrollpopap.setLayoutParams(rel_btn);
            scrollpopap.setScrollingEnabled(false);
42
My God

このようにDPをPXに変換します。

final float scale = getContext().getResources().getDisplayMetrics().density;
int px = (int) (100 * scale + 0.5f);  // replace 100 with your dimensions

相対レイアウトのいくつかのlayout_gravityを設定します。 Java code。で高さと幅を変更します。

RelativeLayout rl = (RelativeLayout) findViewById(R.id.yourId);
rl.getLayoutParams().height = px;  
rl.getLayoutParams().width = px;
26
Ankit Kumar

RelativeLayoutの高さを変更する場合、これが役立ちます。

RelativeLayout relativeLayout = (RelativeLayout) findViewById(R.id.yourId);
relativeLayout.getLayoutParams().height = 100;
relativeLayout.getLayoutParams().width = 100;
4
shaiban

これを使用

RelativeLayout layout = (RelativeLayout) findViewById(R.id.yourlayout_id);
// Gets the layout params that will allow you to resize the layout
LayoutParams params = layout.getLayoutParams();
params.height = 320;
params.width = 320;
3
Ramesh Devaiya