设置标题背景颜色设置标题背景颜色(Set title background color)

2019-05-09 02:02发布

在我的Android应用程序,我想标准/基本标题栏来改变颜色。

要改变你的文本颜色setTitleColor(int color) ,有没有办法来改变栏的背景颜色?

Answer 1:

该线程将让你开始在你的活动构建自己的标题栏的XML文件,并使用它

编辑

这里是上面的链接的内容的简要概括-这只是设置文本的颜色和标题栏的背景-不调整大小,没有任何按键,只是simpliest样本

RES /布局/ mytitle.xml -这是将代表标题栏视图

<?xml version="1.0" encoding="utf-8"?>
<TextView
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:id="@+id/myTitle"
  android:text="This is my new title"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent"
  android:textColor="@color/titletextcolor"
   />

RES /价值/的themes.xml -我们要保持默认的Android主题,只需要更改标题背景的背景色。 因此,我们创建一个继承默认主题和设置背景风格到我们自己的风格主题。

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <style name="customTheme" parent="android:Theme"> 
        <item name="android:windowTitleBackgroundStyle">@style/WindowTitleBackground</item>   
    </style> 
</resources>

RES /价值/ styles.xml -这是我们设定的主题中使用我们想要的颜色为标题背景

<?xml version="1.0" encoding="utf-8"?>
<resources> 
   <style name="WindowTitleBackground">     
        <item name="android:background">@color/titlebackgroundcolor</item>                   
    </style>
</resources>

RES /价值/ colors.xml -在这里设置你想要的颜色

<?xml version="1.0" encoding="utf-8"?>
<resources>   
    <color name="titlebackgroundcolor">#3232CD</color>
    <color name="titletextcolor">#FFFF00</color>
</resources>

AndroidManifest.xml中,设置在应用程序(为整个应用程序)的主题,无论是属性还是在活动(仅限本次活动)标签

<activity android:name=".CustomTitleBar" android:theme="@style/customTheme" ...

从活动(称为CustomTitleBar):

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

        requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);
        setContentView(R.layout.main);
        getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.mytitle);

}


Answer 2:

感谢这个明确的解释,但我想通过询问链接的问题(真的不希望做一个新的职位,因为这一个是我的问题地下室)来添加更多的答案一点。

我声明我在标题栏的超从中,我的所有其他活动都是孩子,不得不改变栏的颜色只有一次。 我想也添加一个图标,更改栏中的文本。 我做了一些测试,和管理一个或另一个,但不能两者都在同一时间(使用setFeatureDrawable和的setTitle)来改变。 理想的解决办法是当然的跟随在链接中给出的线程的解释,但正如我在一个超我宣布,我有一个问题,由于的setContentView和R.id.myCustomBar布局,因为如果我记得很清楚,我可以调用的setContentView只有一次...

编辑找到我的答案:

对于那些谁像我一样,喜欢超的工作,因为它非常适合在应用中得到可用的菜单无处不在,它的工作原理同样在这里。

只需添加到您的超类:

requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);
    setContentView(R.layout.customtitlebar);
    getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.customtitlebar);
    customTitleText = (TextView) findViewById(R.id.customtitlebar);

(您必须声明的TextView作为保护类变量)

然后以此威力的是,到处都在你的应用程序(例如如果所有的活动都属于此类儿童),你只需要调用

customTitleText.setText("Whatever you want in title");

和你的标题栏将被编辑。

在我的情况下,相关的XML是(R.layout.customtitlebar):

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal" android:layout_width="fill_parent"
android:layout_height="fill_parent" android:background="@color/background">
<ImageView android:layout_width="25px" android:layout_height="25px"
    android:src="@drawable/icontitlebar"></ImageView>
<TextView android:id="@+id/customtitlebar"
    android:layout_width="wrap_content" android:layout_height="fill_parent"
    android:text="" android:textColor="@color/textcolor" android:textStyle="bold"
    android:background="@color/background" android:padding="3px" />
</LinearLayout>


Answer 3:

还有另一种方式来改变背景颜色,但它是一个黑客,如果窗口及其标题的视图层次改变在Android的未来版本可能会失败。 但是,代码不会崩溃,只是错过设定想要的颜色,在这种情况下。

在你的活动,喜欢的onCreate,这样做:

View titleView = getWindow().findViewById(android.R.id.title);
if (titleView != null) {
  ViewParent parent = titleView.getParent();
  if (parent != null && (parent instanceof View)) {
    View parentView = (View)parent;
    parentView.setBackgroundColor(Color.rgb(0x88, 0x33, 0x33));
  }
}


Answer 4:

protected void onCreate(Bundle savedInstanceState) {        
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    View titleView = getWindow().findViewById(android.R.id.title);
    if (titleView != null) {
      ViewParent parent = titleView.getParent();
      if (parent != null && (parent instanceof View)) {
        View parentView = (View)parent;
        parentView.setBackgroundColor(Color.RED);
      }
    }

在上面的代码,你可以试试,你可以使用标题 ,而不是标题栏 ,这将在应用程序中的所有活动影响



Answer 5:

此代码有助于编程方式更改标题栏的背景Android中。 将颜色更改为任何你想要的颜色。

public void onCreate(Bundle savedInstanceState) 
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.your_layout);
    getActionBar().setBackgroundDrawable(new ColorDrawable(Color.parseColor("#1c2833")));

}


Answer 6:

我想没有。 您可以创建titleless活动和创建活动布局自己的标题栏。

检查这个 ,63号线及以下:

getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.custom_title_1)

设置customview而不是默认的标题视图。



Answer 7:

采取偷看platforms/android-2.1/data/res/layout/screen.xml的SDK。 这似乎定义标题那里。 你可以经常检查这样的布局和借用style="?android:attr/windowTitleStyle"的风格,你可以再使用,并在自己的TextViews覆盖。

您可能能够即使做选择标题进行直接的调整:

TextView title = (TextView)findViewById(android.R.id.title);


Answer 8:

用下面的代码试试

View titleView = getWindow().findViewById(android.R.id.title);
    if (titleView != null) {
      ViewParent parent = titleView.getParent();
      if (parent != null && (parent instanceof View)) {
        View parentView = (View)parent;
        parentView.setBackgroundColor(Color.RED);
      }
    }

还可以使用这个链接它非常有用: http://nathanael.hevenet.com/android-dev-changing-the-title-bar-background/



Answer 9:

还有一个更简便的方法来改变标题栏的颜色,通过使用谷歌提供的V7程序兼容性支持库。

查看如何设置此支持库此链接: https://developer.android.com/tools/support-library/setup.html

一旦你做到了,它足以以下行添加到您的RES /价值/ styles.xml文件:

<style name="AppTheme" parent="AppBaseTheme">
    <item name="android:actionBarStyle">@style/ActionBar</item>
</style>

<!-- Actionbar Theme -->
<style name="ActionBar" parent="Widget.AppCompat.Light.ActionBar.Solid.Inverse">
    <item name="android:background">@color/titlebackgroundcolor</item>
</style>

(假设“titlebackgroundcolor”在您的RES /值/ colors.xml,例如定义为:

<color name="titlebackgroundcolor">#0000AA</color>



Answer 10:

事情似乎变得更好/更容易由于Android 5.0(API等级21)。

我想,你要寻找的是这样的:

<style name="AppTheme" parent="AppBaseTheme">
    <!-- Top-top notification/status bar color: -->
    <!--<item name="colorPrimaryDark">#000000</item>-->
    <!-- App bar color: -->
    <item name="colorPrimary">#0000FF</item>
</style>

看到这里供参考:

https://developer.android.com/training/material/theme.html#ColorPalette



Answer 11:

>“值” - - 我已经在“资源”改变风格的颜色值做到了这一点>“colors.xml”

这将改变整个项目这是我没问题的颜色。



Answer 12:

你可以使用它。

  toolbar.setTitleTextColor(getResources().getColor(R.color.white));


文章来源: Set title background color