2013-07-23 34 views
2

有没有办法将DialogPreference中的标题下的蓝线的颜色更改为黄色或橙色的颜色?我已经试过:在对话框首选项的标题视图下改变蓝线的颜色

  1. 手动
  2. 更改主题的AlertDialogs使用project: android-styled-dialogs
  3. 子类DialogPreference和一个橙色的绘制这是2DP宽onPrepareDialogBuilder(Builder builder)添加customTitleView。 (见android Theme.Holo.Dialog changing blue lines to orange

这些尝试都没有成功。有没有人有过这方面的经验,并找到了解决方案?

+0

可能重复(http://stackoverflow.com/questions/14439538/how-can-i-change-警告对话的标题和颜色的线下),这有一个很好的答案 – Geobits

+0

已经尝试过,约瑟夫伯爵的解决方案。不起作用。 –

回答

0

好吧我想通了,但它是一个hacky的解决方案。对于DialogPreferences,直到showDialog()才会调用AlertDialog.Builder方法(请参阅here)。

明知和here修改解决方案,我们可以摆脱标题与 Window.FEATURE_NO_TITLE标志和夸大自己的XML带有标题和我们自己的水平分隔内置INT:

@Override 
    protected void showDialog(Bundle state) { 
     Context context = getContext();   
     AlertDialog.Builder mBuilder = new AlertDialog.Builder(context); 
     View view = LayoutInflater.from(context).inflate(R.layout.pref_dialog_about_title, null); 

     onBindDialogView(view); 
     mBuilder.setView(view); 
     onPrepareDialogBuilder(mBuilder); 

//  getPreferenceManager().registerOnActivityDestroyListener(); 

     // Create the dialog 
     final Dialog dialog = mBuilder.create(); 
     dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); 
     if (state != null) { 
      dialog.onRestoreInstanceState(state); 
     } 

     dialog.setOnDismissListener(this); 
     dialog.show(); 

     Button neutralButton = ((AlertDialog)dialog).getButton(DialogInterface.BUTTON_NEUTRAL); 
     FontChanger.getInstance(getContext()).changeFont(neutralButton); 
     neutralButton.setTextColor(mColorOrangeEnabled); 
     neutralButton.setBackgroundDrawable(getContext().getResources().getDrawable(R.drawable.ab_background_gradient_bottom)); 
    } 

其中onBindDialogView(View view)只是查找TextViews(标题和消息)并初始化它们。 onPrepareDialogBuilder()只是调用setNeutralButton(...)。

pref_dialog_about_title.xml:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:orientation="vertical"> 
    <LinearLayout 
     android:id="@+id/title_template" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:orientation="horizontal" 
     android:gravity="center_vertical" 
     android:background="@drawable/ab_background_gradient_top"> 
     <TextView 
      android:id="@+id/alertTitle" 
      style="?android:attr/textAppearanceLarge" 
      android:layout_marginTop="6dip" 
      android:layout_marginBottom="9dip" 
      android:layout_marginLeft="10dip" 
      android:layout_marginRight="10dip" 
      android:singleLine="true" 
      android:ellipsize="end" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content"/> 
    </LinearLayout> 
     <RelativeLayout 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:background="@drawable/border"> 

      <TextView 
       android:id="@+id/author" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_centerHorizontal="true"/> 
      <TextView 
       android:id="@+id/btag" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_below="@id/author" 
       android:layout_centerHorizontal="true"/> 

     </RelativeLayout> 
</LinearLayout> 

ab_background_gradient_top:的[此]

<?xml version="1.0" encoding="utf-8"?> 
<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> 
    <!-- Bottom Line --> 
    <item> 
     <shape android:shape="rectangle"> 
      <solid android:color="@color/orange" /> 
     </shape> 
    </item> 

    <!-- Color of your action bar --> 
    <item android:bottom="2dip"> 
     <shape android:shape="rectangle"> 
      <gradient 
      android:angle="90" 
      android:centerColor="#3b0808" 
      android:endColor="#570b0b" 
      android:startColor="#1d0404" 
      android:type="linear" /> 

      <corners 
       android:radius="0dp"/> 
     </shape> 
    </item> 
</layer-list> 
相关问题