2013-11-25 74 views
1

我想使AlertDialog TextView顏色(自定義視圖)依賴於Android版本。 在Android 2.x上,AlertDialog背景色暗,在Android 4.0上有淺色背景。所以文字顏色必須是白色或黑色。 如何引用自動創建的風格或主題?Android AlertDialog自定義視圖文本顏色

這裏我的代碼:

AlertDialog.Builder alert = new AlertDialog.Builder(this); 
LayoutInflater factory = LayoutInflater.from(this); 
View view = factory.inflate(R.layout.remotedialog, null); 
alert.setView(view); 

這裏我的自定義視圖:

<?xml version="1.0" encoding="utf-8"?> 

<LinearLayout 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:orientation="vertical"> 

    <TextView 
     android:id="@+id/textviewremoteusername" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     style="???" 
     android:text="@string/remoteusernametitle" /> 

    <EditText android:id="@+id/edittextremoteusername" 
     android:layout_height="wrap_content" 
     android:layout_width="fill_parent" 
     android:inputType="textNoSuggestions" 
     android:maxLines="1"/> 

</LinearLayout> 

enter image description here

回答

0

好了,你可以在values-v14/styles一個style條目(盲編碼):

<style name="MyTextStyle"> 
    <item name="android:textColor">#ffffff</> 
</style> 

而在values/styles

<style name="MyTextStyle"> 
    <item name="android:textColor">#000000</> 
</style> 

,並指這從您的佈局:

style="@style/MyTextStyle" 

這樣的V14前置設備的文本顏色爲黑色(可以自定義顏色) ,而對於後v14包括,文字顏色將是白色的。

+0

謝謝您的快速回答,但是是不是有一個全球性的風格,定義了「AlertDialog文本顏色」,我可以使用,例如風格= 「@安卓風格/ AlertDialogTextStyle」? – almisoft

+0

我沒有注意到...如果它存在,我想它的存在將基於上述機制。 – gunar

+0

但是你確定所有來自SDK 14的AlertDialog都有白色背景嗎? – almisoft

0

我認爲,這是最好的解決方案,它爲我工作與所有的Android版本,全息& Holo淺色主題:

RES /價值/ style.xml:

<?xml version="1.0" encoding="UTF-8"?> 
<resources> 
    <declare-styleable name="dialog_text_appearance"> 
     <attr name="alert_dialog_text_appearance" format="reference"/> 
    </declare-styleable> 
</resources> 

RES /值/ styles.xml:

<?xml version="1.0" encoding="utf-8"?> 
<resources> 

    <style name="AppThemeABS" parent="Theme.Sherlock"> 
     <item name="alert_dialog_text_appearance">@style/AlertDialogTextAppearance</item> 
    </style> 

    <style name="AppThemeABSLight" parent="Theme.Sherlock.Light"> 
     <item name="alert_dialog_text_appearance">@style/AlertDialogTextAppearanceLight</item> 
    </style> 

    <color name="Black">#000000</color> 
    <color name="White">#FFFFFF</color> 
    <color name="AlertDialogTextColor">#c8c8c8</color> 

    <style name="AlertDialogTextAppearance"> 
     <item name="android:textColor">@color/AlertDialogTextColor</item> 
    </style> 

    <style name="AlertDialogTextAppearanceLight"> 
     <item name="android:textColor">@color/AlertDialogTextColor</item> 
    </style> 

</resources> 

RES /值-V11/styles.xml:

<?xml version="1.0" encoding="utf-8"?> 
<resources> 

    <style name="AlertDialogTextAppearance"> 
     <item name="android:textColor">@color/White</item> 
    </style> 

    <style name="AlertDialogTextAppearanceLight"> 
     <item name="android:textColor">@color/Black</item> 
    </style> 

</resources> 

RES /佈局/ remotedialog.xml:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:orientation="vertical"> 

    <TextView 
     android:id="@+id/textviewremoteusername" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     style="?attr/alert_dialog_text_appearance" 
     android:text="@string/remoteusernametitle" /> 

    <EditText android:id="@+id/edittextremoteusername" 
     android:layout_height="wrap_content" 
     android:layout_width="fill_parent" 
     android:inputType="textNoSuggestions" 
     android:maxLines="1"/> 

</LinearLayout>