アクティビティを定義した場合:
public class DialogActivity extends Activity{
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(dialog_activity.xml);
}
}
上記のアクティビティをダイアログのように表示したいので、AndroidManifest.xmlファイルで、このアクティビティを未満:
<activity Android:name=".DialogActivity" Android:theme="@Android:style/Theme.Dialog"/>
DialogActivity
はダイアログとして表示されました。
問題は、DialogActivity
の幅と高さをカスタマイズして小さなダイアログのようにする方法です。 (現在、デフォルトで画面の大部分を占めています)
- - - - - - - - - - - - - - - 更新 - - - - - - - - - ------
以下のようなカスタムテーマを定義しました。
<style name="myDialog" parent="@Android:style/Theme.Dialog">
<item name="Android:windowFrame">@null</item>
<item name="Android:windowNoTitle">true</item>
<item name="Android:windowIsFloating">true</item>
<item name="Android:windowContentOverlay">@null</item>
<item name="Android:width">100dip</item>
<item name="Android:height">100dip</item>
</style>
次に、AndroidManifest.xml asでDialogActivity
を宣言します。
<activity Android:name=".DialogActivity" Android:theme="@style/myDialog"/>
DialogActivity
が画面全体を占めるようになりました:(。widthとheightの定義:
<item name="Android:width">100dip</item>
テーマでは効果がありません、なぜですか?
最後に、DialogActivity
のサイズをカスタマイズする1つの方法を見つけました。
これは、DialogActivity
のonCreate()
メソッド内にあり、次のコードを追加します。
WindowManager.LayoutParams params = getWindow().getAttributes();
params.x = -20;
params.height = 100;
params.width = 550;
params.y = -10;
this.getWindow().setAttributes(params);
次のように、ウィンドウのパラメーターをアクティブに変更できます。
override fun onStart() {
super.onStart()
window.setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT)
}
私は同様の問題を抱えていたので、アクティビティに次のテーマを使用しました
Android:theme="@style/Base.Theme.AppCompat.Light.Dialog"
次のコードは私の問題を修正しました
setContentView(R.layout.activity_layout);
getWindow().setLayout(width(pixels),height(pixels));
独自のダイアログテーマを指定する必要があります。 http://developer.Android.com/guide/topics/ui/themes.html および AlertDialogのテーマを変更する方法
レイアウトXMLファイルでレイアウトの高さと幅を設定できます
Android:layout_width/Android:layout_heightの「240px」などの値に言及することもできます
LayoutParamsに手間をかけない1行のコードがあります。
getWindow().setLayout((int)(width*.8),(int)(height*.25));
これは、私のプロジェクトの1つで以前使用していて、現在検索しているものですが、同じプロジェクトで見つかりました。