2

私の特定の活動では、テーマを使用しています-

android:theme="@android:style/Theme.Dialog"

画面上のこのウィンドウの実際の寸法を調べる方法はありますか? 私の最後の努力は次のように終わりました:

Display display = getWindowManager().getDefaultDisplay();
Point size = new Point();

これにより、画面全体の実際の解像度が得られます。何か案は?

どうも

4

4 に答える 4

3

API レベル 13 から: Point screenSize = new Point(); getActivity().getWindowManager().getDefaultDisplay().getSize(screenSize);

ここを参照してください:http://developer.android.com/reference/android/view/Display.html#getSize(android.graphics.Point)

于 2014-09-15T12:28:59.837 に答える
0

とても簡単な方法があります

    <RelativeLayout mlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/rootView"
        >
... some other views
    </RelativeLayout>

そして、あなたのアクティビティでは、一度描画されたビューを取得する必要があります。

このような:

private View mRoot;

    @Override
    protected void onResume() {
        super.onResume();

        mRoot = findViewById(R.id.rootView);

        /* after the main view is loaded, start positioning the views */
        mRoot.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
            @Override
            public void onGlobalLayout() {
// in here, the view is already loaded, you can get his size.
// without the navigation / status / title bar
                // remove the observer, we don't need it anymore
mRoot.getViewTreeObserver().removeOnGlobalLayoutListener(this);
                mButton.setRadius(1000);
                mButton.setMinimumWidth(mRoot.getWidth() / 2);
                mButton.setY(mRoot.getHeight() / 3 * 2);
            }
        });
    }

それが役立つことを願っています。

于 2015-02-24T13:50:10.610 に答える
0

これが完全に正しい解決策かどうかはわかりませんが、ダイアログ用に膨らませているレイアウトからルート ビューを取得することでこの問題を解決しました (この場合は ID を割り当てる必要があります)。その後、寸法を取得するのは非常に簡単です:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/root"
    android:layout_width="300dp"
    android:layout_height="wrap_content"
    android:layout_gravity="right"
    android:layout_marginTop="103dp"
    android:background="#FFFFFF">

    <RelativeLayout 
        android:id="@+id/report_header"
        android:layout_height="wrap_content"
        android:layout_width="match_parent"
        android:paddingLeft="15dp">
        ....
    </RelativeLayout>
</RelativeLayout>

ダイアログ アクティビティでは、ルートを取得する必要があります。

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.dialog_layout);
    View root = findViewById(R.id.root);
}

その後、次の方法でダイアログのサイズを取得できます。

Rect r = new Rect ( 0, 0, 0, 0 );
root.getHitRect ( r );

この呼び出しの後、r探しているディメンションが含まれます

于 2012-07-27T17:05:13.957 に答える
-1

実行できる方法は 2 つあります。最初の方法は次のとおりです。

           Display display = getActivity().getWindowManager().getDefaultDisplay(); 
           int width = display.getWidth();
           int widthdp = (int) (width / getResources().getDisplayMetrics().density);
           int height = display.getHeight();
           int heightdp = (int) (height / getResources().getDisplayMetrics().density);

2番目に使用できるのはこれです:

                Point size = new Point();
                display.getSize(size);
                int width_one = size.x;
                int height_one = size.y;
于 2012-07-27T19:44:18.920 に答える