0

高さ: 700 dp と幅: 300 dp の属性を持つ xml のレイアウトがあります。コードでこのレイアウトのサイズを変更するにはどうすればよいですか? 私はこのようなことを試みますが、NullPointerを取得しました:

setContentView(R.layout.log_in_dialog_view);
view = findViewById(R.layout.log_in_dialog_view);
lp = view.getLayoutParams();
lp.height = 200;
lp.width = 200;
view.setLayoutParams(lp);
4

4 に答える 4

0

私はWindowManagerを使用しています:

    DisplayMetrics dm = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);

height = dm.heightPixels;
width = dm.widthPixels;
    WindowManager.LayoutParams WMLP = getWindow()
            .getAttributes();
    WMLP.width = width-200;
    WMLP.height = height-200;
于 2012-10-26T06:17:07.543 に答える
0

以下のコードを試すことができます

DisplayMetrics metrics = getResources().getDisplayMetrics();
RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams((int) (metrics.density * 100 + 0.5f), (int) (metrics.density * 150 + 0.5f));
lp.setMargins(5, 5, 0, 0);

final ImageView imgRss = new ImageView(getApplicationContext());
imgRss.setLayoutParams(lp);
于 2012-10-26T05:44:18.050 に答える
0

ビューへの参照を取得したら、次の操作を実行できます。

ViewGroup.LayoutParameters lp = view.getLayoutParameters();
lp.height = . . .;
lp.width = . . .;
view.setLayoutParameters(lp);

値はピクセル単位である必要があります。dp をピクセルに変換する方法を説明するスレッドがいくつかあります。この回答から別の質問へのコードフラグメントを次に示します。

public static float convertDpToPixel(float dp,Context context){
    Resources resources = context.getResources();
    DisplayMetrics metrics = resources.getDisplayMetrics();
    float px = dp * (metrics.densityDpi/160f);
    return px;
}

int次に、 にキャストして のフィールドの 1 つに代入する前に、0.5f を追加する必要がありますlp

于 2012-10-26T05:24:40.950 に答える
0
layout.setLayoutParams(new LinearLayout.LayoutParams(400,400));

ステートメントから参照を取得した後、上記の文を使用して幅と高さを動的に設定します。xml でリニア レイアウトを使用している場合は、LinearLayout.LayoutParams を使用します。それが異なる場合は、そのレイアウトパラメータを使用してください。1 つ目はステートメントの幅で、2 つ目は高さです。疑問がある場合は、ここにコメントしてください。

于 2012-10-26T05:29:30.917 に答える