Android OSで画面上のウィンドウの場所を設定するにはどうすればよいですか? 画面の左上隅にウィンドウを設定したい。これどうやってするの?
基本的な問題は、アクティビティにダイアログテーマを使用していることです。すると画面中央にアクティビティが表示されます。画面の左上隅に表示したい。どうすればこれを達成できますか?
ご回答有難うございます。とても助かりました。あなたの返信を見て初めて重力についてのヒントを得ました。それまでは重力を無視していました。
だから私はより良いアプローチを提案します。ビューが配置される最上部のコンテナは「ウィンドウ」です。DecorView も Window に配置されるビューです。したがって、私の要件を達成する簡単な方法があります。それは次のとおりです
@Override
public void onWindowFocusChanged(boolean hasFocus) {
super.onWindowFocusChanged(hasFocus);
Window win=getWindow();
WindowManager.LayoutParams para=win.getAttributes();
para.gravity=Gravity.LEFT | Gravity.TOP;
para.x=10;
para.y=10;
win.setAttributes(para);
}
お返事ありがとうございます。本当に助かります。
アクティビティをテーマ ダイアログとして使用している場合は、次のコードを使用できます。
@Override
public void onAttachedToWindow() {
super.onAttachedToWindow();
View view = getWindow().getDecorView();
WindowManager.LayoutParams lp = (WindowManager.LayoutParams) view.getLayoutParams();
lp.gravity = Gravity.LEFT | Gravity.TOP;
lp.x = 10;
lp.y = 10;
lp.width = 300;
lp.height = 300;
getWindowManager().updateViewLayout(view, lp);
}
アラート ダイアログを使用していて、設定を調整したい場合は、次のコード スニペットに従うことができます。
private CharSequence[] items = {"Set as Ringtone", "Set as Alarm"};
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setItems(items, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int item) {
if(item == 0) {
} else if(item == 1) {
} else if(item == 2) {
}
}
});
AlertDialog dialog = builder.create();
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
WindowManager.LayoutParams wmlp = dialog.getWindow().getAttributes();
wmlp.gravity = Gravity.TOP | Gravity.LEFT;
wmlp.x = 100; //x position
wmlp.y = 100; //y position
dialog.show();