我一直在尋找一種簡單而乾淨的方式來改變我的AlertDialog
側邊,但沒有成功。爲了更加清晰,我想要的是改變對話框的每個邊和屏幕的邊/邊之間的距離。我想我的對話框,顯示一個類似於那些出現在 Material Design specification如何更改Android對話框邊距(到屏幕邊緣的距離)?
這裏是我想什麼圖像/從一個簡單的Android AlertDialog
期望,並在右邊,有什麼我實際上與看代碼如下。
這裏是我的代碼。
AlertDialog.Builder builder = new AlertDialog.Builder(context);
builder.setMessage(message);
builder.setTitle(title);
builder.setPositiveButton(positiveId, positiveListener);
builder.show();
之前跳轉到設置對話框的LayoutParams
編程的顯而易見的答案,讓我說,我知道我可以做這樣的事情,並擺脫它。
final AlertDialog dialog = builder.create();
Display display = getWindowManager().getDefaultDisplay();
int width = display.getWidth();
float dialogWidth = width - TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 2 * SIDE_MARGIN_IN_DPS, r.getDisplayMetrics());
WindowManager.LayoutParams lp = new WindowManager.LayoutParams();
lp.copyFrom(dialog.getWindow().getAttributes());
lp.width = (int) dialogWidth;
lp.height = WindowManager.LayoutParams.WRAP_CONTENT;
dialog.getWindow().setAttributes(lp);
dialog.show();
但我不能相信沒有更容易和更清潔方式這一點,我們應該爲此,我們要開一個AlertDialog
每次做。我嘗試將邊距設置爲應用於對話框的樣式,但是它沒有做任何操作,或者改變了對話框的內邊距(內容和對話框的邊/邊之間的邊距)。我想我正在看錯誤的風格。
有沒有人提出過這個問題?有關如何在樣式中而不是在代碼中設置此邊距的任何想法?
UPDATE:
這裏是我的應用風格/主題:
<style name="Base.Theme.App" parent="Theme.AppCompat.Light.NoActionBar">
<item name="colorPrimary">@color/primary</item>
<item name="colorPrimaryDark">@color/primary_dark</item>
<item name="colorAccent">@color/accent</item>
<item name="android:windowBackground">@color/activity_background</item>
<item name="android:textColor">@color/primary_text</item>
<item name="android:textColorSecondary">@color/secondary_text</item>
<item name="colorControlHighlight">@color/control_highlight</item>
<item name="colorControlActivated">?attr/colorAccent</item>
<!-- You can also set colorControlNormal and colorSwitchThumbNormal. -->
<!--<item name="android:colorButtonNormal">@color/primary</item>-->
<item name="android:spinnerStyle">@style/form_spinner</item>
<item name="spinnerStyle">@style/form_spinner</item>
<item name="android:spinnerItemStyle">@style/form_spinner_item</item>
<item name="editTextStyle">@style/form_edittext</item>
<item name="android:editTextStyle">@style/form_edittext</item>
<item name="alertDialogTheme">@style/Theme.App.Dialog.Alert</item>
</style>
這是我的alertDialogTheme
<style name="Theme.App.Dialog.Alert" parent="Theme.AppCompat.Light.Dialog.Alert">
<item name="colorPrimary">@color/primary</item>
<item name="colorAccent">@color/primary</item>
<item name="android:windowBackground">@color/activity_background</item>
<item name="android:textColor">@color/primary_text</item>
<item name="android:textColorSecondary">@color/secondary_text</item>
<item name="colorControlHighlight">@color/control_highlight</item>
</style>
什麼是您的基本應用程序風格/主題? –
也許嘗試查看具有託管其中的警報對話框的主佈局的XML文件,然後更改該文件中根元素的左側和右側填充。 –
@dieter_h我已經添加了我的基本應用程序樣式/主題。 – acrespo