web-dev-qa-db-ja.com

Textview:ダイアログタイトルスタイルを使用:@Android:style / TextAppearance.DialogWindowTitle

私は現在、独自のDialogFragmentテーマを作成しようとしています。

私の要件の1つは、タイトルの右側にあるアイコンを使用することです。

最初のアイデア

単に使用:

this.getDialog().getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.dialog_title);

しかし、残念ながら、このコード行には結果がありません。

2番目のアイデア

このテキストビューで自分のレイアウト-this.setContentView()-を証明する:

<TextView
    Android:id="@+id/tvTitle"
    Android:layout_width="fill_parent"
    Android:layout_height="wrap_content"
    Android:text="From XML"
    Android:textAppearance="@Android:style/TextAppearance.DialogWindowTitle" />

私はテキストを読むことができるのでこれは機能しますが、それでもデフォルトの黒いフォントで書かれています。

TextAppearance.DialogWindowTitleがテキストにタイトルアパランスを与えることを期待していました(大きなフォントサイズのHoloの青)

アイデアや提案はありますか?

[〜#〜]編集[〜#〜]

これはほとんどトリックを行いました:

<style name="Dialog" parent="@Android:style/Theme.Dialog">
    <item name="Android:windowTitleStyle">@style/MyOwnDialogTitle</item>
</style>

<style name="MyOwnDialogTitle">
    <item name="Android:drawableRight">@drawable/MyRightImage</item>
</style>

しかし、Android:drawableRightはタイトルレイアウトを壊しました:

enter image description here

2番目の編集

これは少し良いです:

<style name="Dialog" parent="@Android:style/Theme.Dialog">
    <item name="Android:windowTitleStyle">@style/MyOwnDialogTitle</item>
</style>

<style name="MyOwnDialogTitle">
    <item name="Android:textAppearance">@Android:style/TextAppearance.DialogWindowTitle</item>
    <item name="Android:drawableRight">@drawable/icon</item>
</style>

enter image description here

19
Waza_Be

多分あなたはこの方法でデフォルトのスタイルを拡張することができます:

res/values/dialogstyles.xml

<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:Android="http://schemas.Android.com/apk/res/Android">
    <style name="Dialog" parent="@Android:style/Theme.Dialog">
        <item name="Android:windowTitleStyle">@style/MyOwnDialogTitle</item>
    </style>
    <style name="MyOwnDialogTitle">
        <item name="Android:drawableRight">@drawable/MyRightImage</item>
    </style>
</resources>

res/values-v11/dialogstyles.xml

<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:Android="http://schemas.Android.com/apk/res/Android">
     <style name="Dialog" parent="@Android:style/Theme.Holo.Dialog">
          <item name="Android:windowTitleStyle">@style/MyOwnDialogTitle</item>
     </style>
</resources>

そして、DialogFragmentのonCreateをオーバーライドします。

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setStyle(DialogFragment.STYLE_NORMAL, R.style.Dialog);
}

実施例

18
Sherif elKhatib

最初の要件を探しています。しかし、2番目の要件として、カスタムスタイルでTextAppearance.DialogWindowTitleのスタイルに色を変更してみませんか?

私はAndroidリソースをチェックするだけで、以下のようなスタイルがあります:

  <style name="DialogWindowTitle">
    <item name="Android:maxLines">1</item>
    <item name="Android:scrollHorizontally">true</item>
    <item name="Android:textAppearance">@style/TextAppearance.DialogWindowTitle</item>
</style>

textAppearance.DialogWindowTitleスタイルの場合:

 <style name="TextAppearance.DialogWindowTitle">
    <item name="Android:textSize">18sp</item>
    <item name="Android:textStyle">normal</item>
    <item name="Android:textColor">?textColorPrimary</item>
</style>

これで、TextAppearance.DialogWindowTitleスタイルの色を変更し、必要に応じて行うことができます。

あなたがポイントを得たことを願っています。

コメントしてください。

1

parentとして@Android:style/Theme.Holo.Light.Dialogをスタイルで使用しようとしましたか?これはAndroid 3+でのみ機能します。以前のバージョンにはテーマHoloがないためですが、Androidの下位バージョン用に独自のテーマを作成することができます。

0
h4rd4r7c0r3