0

画面の幅と高さをプログラムで特定しました。次に、その幅と高さをxmlファイルで使用します。これを達成する方法を教えてください。

これが私のActivityクラスです。

 public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        DisplayMetrics display = this.getResources().getDisplayMetrics(); 
        float width = display.widthPixels;
        float height = display.heightPixels;
        Toast.makeText(TestProjectActivity.this, "width and height is: "+width + ": "+height, Toast.LENGTH_LONG).show();

        float w = convertPixelsToDp(width, this);
        float h = convertPixelsToDp(height, this);

        Toast.makeText(TestProjectActivity.this, "DP" +w+":  "+h, Toast.LENGTH_LONG).show();
    }

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

w次に、とbをxmlに送信して、さらに作業を進めます。

何か助けがありますか?ありがとう。

4

1 に答える 1

0

情報を XML に戻すことはできません。せいぜい、ウィジェットを使用して取得しfindViewById、プログラムでウィジェットのサイズを設定できます。

どのスクリーンデバイスでも動作するアプリケーションを開発しています。というわけで画面サイズの問題。textview の幅を 200dp に設定している場合、自分のデバイスでは問題ありませんが、他のデバイスでは表示されません。したがって、XMLで検出された幅と高さを超えてこれを使用できる方法が必要です

次に、 a を使用しLinearLayoutて、使用可能な幅に対する相対的なサイズを画像に与える必要があります (画面の幅のパーセンテージなど)。

XML は次のようになります (疑似コード)

LinearLayout (layout_width: match_parent, layout_height: wrap_content)
  ImageView (layout_width: 0dip, layout_height: wrap_content, layout_weight: 50)
  ImageView (layout_width: 0dip, layout_height: wrap_content, layout_weight: 50)

上記の例では、各画像ビューは、ピクセル数に関係なく、画面幅の 50% を占めます。

Android のレイアウトに関する優れたチュートリアルを Google で検索する必要があると思います。

于 2012-11-22T09:32:50.683 に答える