2017-02-14 169 views
0

我已經爲我的自定義登錄對話框自定義對話框成爲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

你可以附上你想要什麼和你得到的一些截圖嗎? –

回答

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>