私の特定の活動では、テーマを使用しています-
android:theme="@android:style/Theme.Dialog"
画面上のこのウィンドウの実際の寸法を調べる方法はありますか? 私の最後の努力は次のように終わりました:
Display display = getWindowManager().getDefaultDisplay();
Point size = new Point();
これにより、画面全体の実際の解像度が得られます。何か案は?
どうも
私の特定の活動では、テーマを使用しています-
android:theme="@android:style/Theme.Dialog"
画面上のこのウィンドウの実際の寸法を調べる方法はありますか? 私の最後の努力は次のように終わりました:
Display display = getWindowManager().getDefaultDisplay();
Point size = new Point();
これにより、画面全体の実際の解像度が得られます。何か案は?
どうも
API レベル 13 から:
Point screenSize = new Point();
getActivity().getWindowManager().getDefaultDisplay().getSize(screenSize);
ここを参照してください:http://developer.android.com/reference/android/view/Display.html#getSize(android.graphics.Point)
とても簡単な方法があります
<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);
}
});
}
それが役立つことを願っています。
これが完全に正しい解決策かどうかはわかりませんが、ダイアログ用に膨らませているレイアウトからルート ビューを取得することでこの問題を解決しました (この場合は 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
探しているディメンションが含まれます
実行できる方法は 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;