我有一个工具栏,我使用,并设置标题:
((ActionBarActivity)getActivity()).getSupportActionBar().setTitle("Home");
Run Code Online (Sandbox Code Playgroud)
有没有办法将颜色从黑色变为白色?
我尝试制作自己的主题并在xml中设置它,但没有骰子:
<resources>
<!-- Base application theme. -->
<style name="AppTheme2" parent="Theme.AppCompat">
<item name="android:windowNoTitle">true</item>
<item name="windowActionBar">false</item>
<item name="colorPrimary">@color/primary</item>
<item name="colorPrimaryDark">@color/primary_dark</item>
<item name="colorAccent">@color/accent</item>
<item name="android:textColorPrimary">@color/primary_text</item>
<item name="android:textColorSecondary">@color/secondary_text</item>
</style>
<style name="Widget.MyApp.ActionBar" parent="Widget.AppCompat.ActionBar">
<item name="android:background">@color/primary</item>
<item name="theme">@style/ThemeOverlay.MyApp.ActionBar</item>
<item name="popupTheme">@style/ThemeOverlay.AppCompat.Light</item>
</style>
<style name="ThemeOverlay.MyApp.ActionBar" parent="ThemeOverlay.AppCompat.ActionBar">
<item name="android:textColorPrimary">#FFFFFF</item>
</style>
</resources>
Run Code Online (Sandbox Code Playgroud)
XML:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#e5e5e5"
android:orientation="vertical" >
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:minHeight="?attr/actionBarSize"
android:background="@color/primary"
android:layout_width="match_parent"
android:layout_height="wrap_content"
style="@style/Widget.MyApp.ActionBar">
<Spinner
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/statsSpin"
android:spinnerMode="dropdown"
android:textColor="#FFFFFF"/>
</android.support.v7.widget.Toolbar>
<ListView
android:id="@+id/yourStats"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:dividerHeight="0px"
android:divider="@null"
>
</ListView>
</LinearLayout>
Run Code Online (Sandbox Code Playgroud) 朋友们,
我使用以下带有代码的titlebar.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"
android:layout_marginLeft="25px"
android:paddingTop="3px"
/>
Run Code Online (Sandbox Code Playgroud)
和java代码在每个活动上显示自定义标题栏.
@Override
public void onCreate(Bundle savedInstanceState)
{
requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);
getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.mytitle);
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
Run Code Online (Sandbox Code Playgroud)
现在我想在每个活动中动态设置textview值,任何人都可以指导我如何实现这一目标?
在这里使用findviewbyid我没有得到该textview的引用来设置值,因为主布局不包含任何具有这样的名称但是mytitle的文本框.
任何帮助都会得到满足.
到目前为止,我发现的所有用于更改活动标题栏颜色的解决方案(即通过activity.setTitle()和activity.setProgress()访问的解决方案)都要求FEATURE_CUSTOM_TITLE:
但我已经在使用FEATURE_PROGRESS和Android禁止将自定义标题与其他标题功能相结合(通过AndroidRuntimeException),我不想放弃那个很好的进度条,这是我活动中不可或缺的一部分.
关于在没有FEATURE_CUSTOM_TITLE的情况下更改活动标题栏颜色的唯一提示是在另一个SO线程中:
View titleView = getWindow().findViewById(android.R.id.titlebar);
if (titleView != null) {
ViewParent parent = titleView.getParent();
if (parent != null && (parent instanceof View)) {
View parentView = (View)parent;
parentView.setBackgroundColor(Color.RED);
}
}
Run Code Online (Sandbox Code Playgroud)
但是,如果我尝试按原样使用代码,则android.R.id.titlebar无法解决!
我在哪里找到的android.R.id.titlebar?
我必须自己定义吗?(如果答案是肯定的,这本质上不是FEATURE_CUSTOM_TITLE吗?)
可能重复:
设置标题背景颜色
如何在Android应用中更改标题栏颜色?
我试过了:
this.setTitleColor(Color.BLUE);
Run Code Online (Sandbox Code Playgroud)
但它改变了书面文字的颜色而不是标题栏颜色.
我做了一个自定义标题栏.标题栏中是两个彼此相邻的图像视图,下面是一个文本视图.它工作正常,但我只看到textview的顶部.所以我认为标题栏在底部被裁剪.有人知道如何设置自定义标题栏的高度吗?编辑:我的自定义标题栏:
<?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="45dip"
android:orientation="vertical"
android:id="@+id/header_root">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<ImageView
android:id="@+id/header_image"
android:layout_width="wrap_content"
android:layout_height="27dip"
android:src="@drawable/header_image"
/>
<ImageView
android:id="@+id/options"
android:layout_width="wrap_content"
android:layout_height="27dip"
android:layout_margin="-8dip"
android:layout_toRightOf="@+id/header_image"
android:src="@drawable/options" />
</RelativeLayout>
<TextView
android:text="Vissenencyclopedie"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:textSize="15dp"
android:id="@+id/titel"
android:layout_marginTop="-7dip"
/>
</LinearLayout>
Run Code Online (Sandbox Code Playgroud) 在我的onCreate()中,我设置了一个进度条,如下所示:
getWindow().requestFeature(Window.FEATURE_PROGRESS);
getWindow().setFeatureInt( Window.FEATURE_PROGRESS, Window.PROGRESS_VISIBILITY_ON);
Run Code Online (Sandbox Code Playgroud)
现在,希望稍微增强标题栏,我想改变它的背景颜色.第一步是检查是否FEATURE_CUSTOM_TITLE支持:
final boolean customTitleSupported = requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);
if ( customTitleSupported ) {
Log.i(TAG, "CUSTOM TITLE SUPPORTED!")
}
Run Code Online (Sandbox Code Playgroud)
但是一旦我打电话给requestWindowFeature(Window.FEATURE_CUSTOM_TITLE)我得到一个:
AndroidRuntimeException: You cannot combine custom titles with other title features
Run Code Online (Sandbox Code Playgroud)
(如果我在设置之前FEATURE_PROGRESS或之后调用此函数无关紧要)
知道如何解决这个问题吗?
或者,如果我能找到非自定义标题栏的资源ID,我会避免使用自定义标题栏.比危险的getParent()更好的东西.
这可能吗?