【问题标题】:Another DialogFragment title color issue另一个 DialogFragment 标题颜色问题
【发布时间】:2017-01-05 19:06:30
【问题描述】:

我已经阅读了一些与此主题相关的问题并尝试了一些代码示例。我的最低 API 级别是 11。一些方法是根据布局源代码获取它们的 id: dialog layout

我尝试在我的 DialogFragment 中使用简单的这段代码来获取 TextView:

    int titleTextId = getResources().getIdentifier("android:id/alertTitle", null, null);
    TextView titleText = (TextView)getDialog().findViewById(titleTextId);
    titleText.setTextColor(ContextCompat.getColor(getActivity(), R.color.darkerOrange));
    if(titleText != null){
        Log.d("DEBUG", "FOUNDED");
    }

这是我的 styles.xml 文件:

<resources>
<style name="AppTheme" parent="@style/Theme.AppCompat.Light.DarkActionBar">
    <item name="actionBarStyle">@style/MyActionBar</item>
    <item name="android:alertDialogTheme">@style/DialogTitleText</item>
</style>

<style name="MyActionBar" parent="@style/Widget.AppCompat.ActionBar.Solid">
    <item name="titleTextStyle">@style/TitleBarTextColor</item>
    <item name="background">@color/white</item>
</style>

<style name="TitleBarTextColor" parent="@style/TextAppearance.AppCompat.Widget.ActionBar.Title">
    <item name="android:textColor">@color/darkerOrange</item>
</style>

<style name="DialogTitleText" parent="@style/Theme.AppCompat.Light.Dialog">
    <item name="android:windowTitleStyle">@style/DialogTitleStyle</item>
</style>

<style name="DialogTitleStyle" parent="@style/DialogTitleText">
    <item name="android:textColorPrimary">@color/darkOrange</item>
</style>

<style name="SplashScreen" parent="Theme.AppCompat.NoActionBar">
    <item name="android:windowBackground">@drawable/splash_screen</item>
</style>

<style name="TabLayoutTextSize" parent="TextAppearance.Design.Tab">
    <item name="android:textSize">20dp</item>
</style>

我的 AndroidManifest.xml

<application
    ...
    android:theme="@style/AppTheme">
    ...

这些是访问过的链接:

How to style AlertDialogs like a pro

Android - DialogFragment change title text color

Styling custom dialog fragment not working

Android change toolbar title color to white

即使使用这些方法,我也没有成功更改标题颜色。我想'将 min API 保留为 11。这与这个 min API 有关吗?

【问题讨论】:

  • 我一直在处理类似的事情,我认为这个标题是为了快速设置对话。对于任何自定义的对话框体实现。您可以定义对话框主体的布局(将标题放在里面),并从对话框构建器中删除 setTitle()。这个title就是TextView,有padding,大小不同,很容易复制。
  • 感谢您的回复。我跟着它解决了问题。我现在就给出答案。

标签: android colors toolbar title dialogfragment


【解决方案1】:

根据@Gudin 的建议,我搜索并找到了标题布局源:

DialogFragment title layout

我应用了源代码来找到视图并且它可以工作。

更改此行:getResources().getIdentifier("android:id/alertTitle", null, null);

对此:getResources().getIdentifier("title", "id", "android");

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-23
    • 1970-01-01
    相关资源
    最近更新 更多