Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/234.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 4.3中的自定义ActionBar文本外观_Android_Android Actionbar - Fatal编程技术网

Android 4.3中的自定义ActionBar文本外观

Android 4.3中的自定义ActionBar文本外观,android,android-actionbar,Android,Android Actionbar,我用以下代码自定义了我的应用程序标题在操作栏上的外观 <style name="myTheme.ActionBar.Text" parent="@android:style/TextAppearance"> <item name="android:textColor">#ff2d2d2d</item> <item name="android:textSize">26sp</item> <item name=

我用以下代码自定义了我的应用程序标题在操作栏上的外观

<style name="myTheme.ActionBar.Text" parent="@android:style/TextAppearance">
    <item name="android:textColor">#ff2d2d2d</item>
    <item name="android:textSize">26sp</item>
    <item name="android:fontFamily">sans-serif-condensed</item>
    <item name="android:textAllCaps">true</item>
    <item name="android:textStyle">bold</item>
</style>

#FF2D2D
26便士
无衬线压缩
真的
大胆的
无论如何,在我测试过的大多数设备中,一切都很正常(精确地说是3台),但对于1台,运行安卓4.3(Sony Xperia Z)的设备,没有应用这种风格。我后来在运行4.3的模拟器上测试了它,得到了相同的结果

有没有办法解决这个问题

以下是应用程序的完整样式

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

<resources>

    <!-- Base application theme. -->
    <style name="AppTheme" parent="android:Theme.Holo.Light">

        <item name="android:actionBarStyle">@style/myTheme.ActionBar</item>
        <!-- Customize your theme here. -->
        <item name="android:textViewStyle">@style/RobotoTextViewStyle</item>
        <item name="android:buttonStyle">@style/RobotoButtonStyle</item>
        <item name="android:editTextBackground">@drawable/apptheme_edit_text_holo_dark</item>

        <item name="android:actionBarItemBackground">@drawable/nav_list_selector</item>

    </style>


    <style name="RobotoTextViewStyle" parent="android:Widget.TextView">
        <item name="android:fontFamily">sans-serif-light</item>
    </style>

    <style name="RobotoButtonStyle" parent="android:Widget.Holo.Button">
        <item name="android:fontFamily">sans-serif-light</item>
    </style>

    <style name="myTheme.ActionBar" parent="@android:style/Widget.Holo.Light.ActionBar">
        <item name="android:titleTextStyle">@style/myTheme.ActionBar.Text</item>
        <item name="android:background">@drawable/action_bar_bg</item>
        <item name="android:searchButtonText">SEARCH</item>
        <item name="android:editTextBackground">@drawable/apptheme_edit_text_holo_dark</item>

    </style>

    <style name="myTheme.ActionBar.Text" parent="@android:style/TextAppearance">
        <item name="android:textColor">#ff2d2d2d</item>
        <item name="android:textSize">26sp</item>
        <item name="android:fontFamily">sans-serif-condensed</item>
        <item name="android:textAllCaps">true</item>
        <item name="android:textStyle">bold</item>
    </style>

</resources>

@style/mysteme.ActionBar
@样式/机器人文本视图样式
@样式/机器人按钮样式
@可绘制/应用主题\编辑\文本\全息\暗
@可绘图/导航列表选择器
无衬线灯
无衬线灯
@style/mysteme.ActionBar.Text
@可拉拔/动作杆
搜寻
@可绘制/应用主题\编辑\文本\全息\暗
#FF2D2D
26便士
无衬线压缩
真的
大胆的

对我来说,这就像一个符咒。 让我们为动作栏创建一个自定义视图

res/layout/action\u title\u view.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@android:color/transparent" >

    <TextView
        android:id="@+id/title"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerVertical="true"
        android:layout_marginLeft="10dp"
        android:ellipsize="end"
        android:maxLines="1"
        android:text=""
        android:textAllCaps="true"
        android:textSize="16sp"
        android:textColor="@color/actionbar_text" />

</RelativeLayout>
现在覆盖活动的setTitle方法

@Override
public void setTitle(CharSequence title) {
    mTitle = title;
    ((TextView) mCustomActionView.findViewById(R.id.title)).setText(mTitle);
    getActionBar().setTitle("");
}

使用setTitle方法设置自定义操作栏文本。希望这有帮助。

当我读到这篇文章时,我想到的第一件事是,您可能正在使用values-v文件夹为每个API版本使用不同的资源

一个小例子: 在“常规值”文件夹中,我已将文本颜色设置为蓝色:

<style name="TextMedium" parent="@android:style/TextAppearance.Medium">
<item name="android:textColor">@color/Blue</item>

@颜色/蓝色
在values-v11中,我有一个样式可以设置为白色文本颜色:

<style name="TextMedium" parent="@android:style/TextAppearance.Medium">
<item name="android:textColor">@color/White</item>
<style name="TextMedium" parent="@android:style/TextAppearance.Medium">
<item name="android:textColor">@color/Red</item>

@颜色/白色
在values-v14中,我有一个样式设置为红色文本颜色:

<style name="TextMedium" parent="@android:style/TextAppearance.Medium">
<item name="android:textColor">@color/White</item>
<style name="TextMedium" parent="@android:style/TextAppearance.Medium">
<item name="android:textColor">@color/Red</item>

@颜色/红色
现在,(您可能猜到了),根据您的设备的api级别,使用这种样式。所以,如果您在API级别13上运行此代码,则文本颜色将为白色。对于低于11的每个api级别,都使用蓝色

现在还有一件事,如果您正在使用的SDK的values-v文件夹中没有样式/资源,则将引用第二个最佳替代方案(因此,如果values-v16没有文本颜色的引用,则将使用values-v14)

在您的情况下,应该有一个values-v17(jellybean和更高版本)包含您引用的样式,如果较低api级别的设备尝试访问该样式,它将不会出现在样式文件夹中,它们将不会使用较高api级别的资源


我并不是说这是您的问题的原因,这只是一个猜测,因为您没有提供有关样式版本控制的信息。此外,由于Jelly Bean 4.3及更高版本可以工作,您可能会参考Api级别17中添加的功能,这有什么问题?或者我们应该猜猜你遇到了什么麻烦?屏幕截图或类似的东西会很有帮助。@Ahmad没有应用这种风格。这还不够明显吗?不,这还不够明显。它可能是,只有一部分没有或被应用。然而。设备运行的Android版本是什么?它在哪工作?@Ahmad你说得有道理,我道歉。它在4.2.2、4.1.2和4.4.2中起作用。我将很快发布屏幕截图来支持这个问题。这确实很奇怪。这会为我生成一个错误
没有资源文件匹配给定的名称:
@Olayinka-你是对的。我已经更新了我的ans。请重试。这不就是将同一主题放在support-v11文件夹中吗??还是我遗漏了什么?我通常会为不同的api级别放置不同的文件,cz它们有不同的属性,并且每次都有效。如果我可以问的话,为什么这一个是11?其间,我尝试了,但仍然得到了相同的结果。问题是我根本没有使用样式版本控制。我有一个values文件夹,它是
values
。我的最低sdk是16。在这种情况下,我的答案与你无关。我将把我的问题留给遇到这个问题的其他用户。