2017-05-05 58 views
-1

如何更改我的應用程序中所有對話框的樣式?在Android中更改對話框樣式

我的應用程序使用了一些「材料黑暗的主題」 - >我不知道爲什麼,所有的對話框都有「醜陋灰色」的顏色,我無法改變它!

我試圖將它翻

super(context, R.style.my_super_dialog_style); 

但我不能改變這樣的我的喜好!

我使用:

  1. 警告對話框
  2. 進度對話框
  3. 名單偏好(其中點擊後也對話框 - >與期權)
  4. multiselectpreference(就像3)
  5. texteditpreference

我需要改變E:

  1. 背景顏色
  2. 標題顏色
  3. 消息顏色
  4. 進展顏色(可選的,它是相同的顏色爲4,6,7)
  5. 正/負鍵文本顏色(可選,我正在改變它通過Java)
  6. 複選框活動的顏色(可選,它是4,6,7相同的顏色)
  7. 無線電主動顏色(可選,它是4,6,7相同的顏色)

順便說一句,當我最終以爲我發現了顏色(通過「主題編輯器」),顏色無法編輯,因爲它是隻讀的!當我製作該風格的副本時,它不起作用。

+0

爲您的應用創建自定義對話框...爲此,你必須製作xml(用戶界面佈局)文件並在對話框中充氣它 –

回答

2

您可以使用自定義佈局創建對話框。

首先創建自定義佈局的對話框

例如

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:orientation="vertical" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:background="@drawable/dialogrectangle"> 


<TextView 
    android:id="@+id/sub_dialog" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="Text" 
    android:layout_centerInParent="true" 
    android:layout_centerHorizontal="true" 
    android:layout_marginBottom="dimen/marginTop" 
    android:textSize="@dimen/invalidSize" 
    /> 




<ImageView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentBottom="true" 
    android:scaleType="fitXY" 
    android:layout_marginBottom="dimen/marginBotom" 
    android:src="@drawable/okay"/> 

是創建對話框類

public class ViewDialog { 
public void showDialog(View activity,int width,int height){ 
    final Dialog dialog = new Dialog(activity.getContext()); 
    dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); 
    dialog.setCancelable(false); 
    dialog.setContentView(R.layout.custom_dialog); 

    ImageView dialogButton = (ImageView) dialog.findViewById(R.id.okay); 
    dialogButton.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      dialog.dismiss(); 
     } 
    }); 

    dialog.show(); 
    Window window = dialog.getWindow(); 

    window.setLayout(width, height); 

} 
} 

然後後,使用這些行顯示對話框,在其中你想要顯示

ViewDialog dialog = new ViewDialog(); 

dialog.showDialog(view,width,height); 

讓我知道是否有幫助。 :)

+0

這樣我還必須創建自定義文本編輯首選項,列表首選項,多重選擇首選項。它與通過構造函數設置自定義樣式相同。 –

+0

是的,你是對的,你需要爲每個人定製佈局。 –

1

我認爲你必須定義你自己的主題風格。只有在某些屬性窗口中才能更改所需屬性。

+0

是的,我知道..但是如何? (爲了使它適用於每個組件) –