web-dev-qa-db-ja.com

アクティビティをダイアログとして表示するときに幅と高さをカスタマイズする方法

アクティビティを定義した場合:

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が画面全体を占めるようになりました:(。widthheightの定義:

<item name="Android:width">100dip</item>

テーマでは効果がありません、なぜですか?

30
Leem

最後に、DialogActivityのサイズをカスタマイズする1つの方法を見つけました。

これは、DialogActivityonCreate()メソッド内にあり、次のコードを追加します。

WindowManager.LayoutParams params = getWindow().getAttributes();  
params.x = -20;  
params.height = 100;  
params.width = 550;  
params.y = -10;  

this.getWindow().setAttributes(params); 
42
Leem

次のように、ウィンドウのパラメーターをアクティブに変更できます。

override fun onStart() {
        super.onStart()
        window.setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT)
    }
2
Djek-Grif

私は同様の問題を抱えていたので、アクティビティに次のテーマを使用しました

Android:theme="@style/Base.Theme.AppCompat.Light.Dialog"

次のコードは私の問題を修正しました

 setContentView(R.layout.activity_layout);
 getWindow().setLayout(width(pixels),height(pixels));
1
Harish Rana

独自のダイアログテーマを指定する必要があります。 http://developer.Android.com/guide/topics/ui/themes.html および AlertDialogのテーマを変更する方法

0
Stefan H Singer

レイアウトXMLファイルでレイアウトの高さと幅を設定できます

Android:layout_width/Android:layout_heightの「240px」などの値に言及することもできます

0
Maidul

LayoutParamsに手間をかけない1行のコードがあります。

getWindow().setLayout((int)(width*.8),(int)(height*.25));

これは、私のプロジェクトの1つで以前使用していて、現在検索しているものですが、同じプロジェクトで見つかりました。

0