自定义对话框成为Android的

问题描述:

我已经为我的自定义登录对话框自定义对话框成为Android的

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:padding="@dimen/padding_large"> 
    <ImageButton android:src="@drawable/ic_settings" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:id="@+id/dialog.login.settings" 
     android:padding="@dimen/margin_medium" /> 
    <TextView android:text="@string/dialog.login.text.user_name" 
     android:textAppearance="?android:attr/textAppearanceSmall" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" /> 
    <EditText android:id="@+id/dialog.login.user_name" 
     android:layout_width="match_parent" 
     android:gravity="center" 
     android:ems="20" 
     android:layout_height="wrap_content" 
     android:inputType="text" 
     android:textAppearance="?android:attr/textAppearanceMedium" /> 
    <TextView android:text="@string/dialog.login.text.password" 
     android:textAppearance="?android:attr/textAppearanceSmall" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" /> 
    <EditText android:id="@+id/dialog.login.password" 
     android:layout_width="match_parent" 
     android:gravity="center" 
     android:layout_height="wrap_content" 
     android:inputType="textPassword" 
     android:textAppearance="?android:attr/textAppearanceMedium" /> 
    <CheckBox android:id="@+id/dialog.login.show_password" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:text="@string/dialog.login.check.show_password" 
     android:textAppearance="?android:attr/textAppearanceSmall" 
     android:layout_margin="@dimen/margin_medium" 
     android:checked="false" /> 
    <LinearLayout android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:orientation="horizontal"> 
     <Button android:id="@+id/dialog.login.cancel" 
      android:drawableStart="@drawable/ic_exit_black" 
      android:layout_width="wrap_content" 
      android:layout_weight="1" 
      android:layout_height="wrap_content" 
      android:layout_marginEnd="@dimen/margin_medium" 
      android:text="@string/dialog.login.button.cancel" /> 
     <Button android:id="@+id/dialog.login.connect" 
      android:text="@string/dialog.login.button.connect" 
      android:layout_width="wrap_content" 
      android:layout_weight="1" 
      android:layout_marginStart="@dimen/margin_medium" 
      android:layout_height="wrap_content" /> 
    </LinearLayout> 
</LinearLayout> 

以下布局,当我创建对话框和的setContentView对话框的宽度的第一个控件的大小变得等于的第一行图​​像按钮

如果我删除,它成为的EditText(dialog.login.user_name)的大小,其EMS是20

当我做的对话框的构造函数调用基对话框构造带R.style.Theme.Material.Dial的主题og它得到正确的(大约3/4的屏幕),但问题是,它忽略我的主要和重音颜色(这是正常的)

有没有办法让对话有Theme.Material。对话框大小但仍保留我自己的主要/重音颜色?

预先感谢任何帮助,您可以提供

+0

你可以附上你想要什么和你得到的一些截图吗? –

很多搜​​索这之后似乎解决方案是真正取代我的主旋律dialogTheme属性,因此该解决方案是:

<style name="app.theme" 
    parent="android:Theme.Material.Light.NoActionBar.Fullscreen"> 
    <item name="android:dialogTheme">@style/app.dialog</item> 
    ...... 
</style> 

<style name="app.dialog" 
    parent="android:Theme.Material.Light.Dialog"> 
    <item name="android:colorPrimary">@color/primary</item> 
    <item name="android:colorPrimaryDark">@color/primary.dark</item> 
    <item name="android:colorAccent">@color/accent</item> 
</style>