●実現したいこと
下のようなダイアログのためのレイアウトを作りました。横幅も縦幅も小さいものです。これをアクティビティで表示したいです。ですが、これをアクティビティで表示させると横幅が大きい状態で表示されます。
java
1<?xml version="1.0" encoding="utf-8"?> 2<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 3 xmlns:app="http://schemas.android.com/apk/res-auto" 4 xmlns:tools="http://schemas.android.com/tools" 5 android:layout_width="wrap_content" 6 android:layout_height="wrap_content" 7 android:background="@color/white" 8 android:gravity="center" 9 android:orientation="vertical"> 10 <TextView 11 android:id="@+id/text" 12 android:layout_width="20dp" 13 android:layout_height="wrap_content" 14 android:layout_margin="10dp" 15 android:text="?" /> 16</LinearLayout>
●試したこと
ネットで色々調べて、ダイアログのサイズ変更を試しましたが、全く変わらず横幅が大きいままか、java.lang.NullPointerException: Attempt to invoke virtual method 'android.view.Window android.app.Dialog.getWindow()' on a null object reference
というエラーが出るかで、横幅の小さいダイアログになりません。
DialogFragmentS1.javaでは、次のように試しましたが、エラーになります。
java
1AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); 2LayoutInflater inflater=LayoutInflater.from(getActivity()); 3view=inflater.inflate(R.layout.dialog_custom_s1_2,null); 4builder.setView(view); 5 Dialog dialog = getDialog(); 6 WindowManager.LayoutParams lp = dialog.getWindow().getAttributes(); 7 DisplayMetrics metrics = getResources().getDisplayMetrics(); 8 9 // 画面サイズの 〇倍の大きさに指定 10 int dialogWidth = (int) (metrics.widthPixels * 0.1); 11 int dialogHeight = (int) (metrics.heightPixels * 0.05); 12 lp.width = dialogWidth; 13 lp.height = dialogHeight; 14 dialog.getWindow().setAttributes(lp); 15dialog = builder.create();
アクティビティでは、次のようなコードを入れて表示させています。
java
1 DialogFragment dialog = new DialogFragmentS1(); 2 dialog.show(getSupportFragmentManager(), "dialog_s1" + dialog_num_s1);
ご教授いただきたいです。よろしくお願いします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/04/11 05:07
2022/04/12 10:50