在我的应用程序中,我使用setCustomView
方法设置操作栏的自定义视图。此视图包含蓝色背景颜色和中心活动标题。
以下是我的用于设置自定义视图的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="25dp"
android:background="@color/darkblue" >
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:gravity="center"
android:textColor="@android:color/white"
android:textSize="15sp"
android:paddingTop="3dp"
android:text="@string/app_name" />
</RelativeLayout>
以下是在活动操作栏中添加它的代码:
actionBar=getActionBar();
actionBar.setCustomView(R.layout.custom_actionbar);
actionBar.setDisplayOptions(com.actionbarsherlock.app.ActionBar.DISPLAY_SHOW_CUSTOM);
现在,我使用以下代码将菜单项(搜索)添加到此自定义操作栏:
public boolean onCreateOptionsMenu(Menu menu) {
com.actionbarsherlock.view.MenuInflater inflater=getSupportMenuInflater();
inflater.inflate(R.menu.search, menu);
super.onCreateOptionsMenu(menu);
return true;
}
但是现在这个添加菜单(搜索)项目的背景不是蓝色,它是Action栏的默认黑色。
这是我的菜单xml
文件:
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:id="@+id/search"
android:showAsAction="always"
android:icon="@drawable/action_search"/>
</menu>
如何解决此问题。
答案 0 :(得分:1)
我认为你的代码正在运作......
请比较:
package com.example.testaction;
import android.os.Bundle;
import com.actionbarsherlock.app.ActionBar;
import com.actionbarsherlock.app.SherlockActivity;
import com.actionbarsherlock.view.Menu;
public class MainActivity extends SherlockActivity {
private ActionBar actionBar;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setTheme(R.style.Sherlock___Theme_Light);
setContentView(R.layout.activity_main);
actionBar = getSupportActionBar();
actionBar.setCustomView(R.layout.test_action);
actionBar
.setDisplayOptions(com.actionbarsherlock.app.ActionBar.DISPLAY_SHOW_CUSTOM);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getSupportMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
}
<强> EDITED 强>
Insted Of Above使用Custome Theam如下所示,您的问题已解决:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<!-- the theme applied to the application or activity -->
<style name="CustomActivityTheme" parent="@android:style/Theme.Holo">
<item name="android:actionBarStyle">@style/MyActionBar</item>
<!-- other activity and action bar styles here -->
</style>
<!-- style for the action bar backgrounds -->
<style name="MyActionBar" parent="@android:style/Widget.Holo.ActionBar">
<item name="android:background">@color/colour_blue</item>
<item name="android:backgroundStacked">#FFFFFF</item>
<item name="android:backgroundSplit">@color/colour_blue</item>
</style>
</resources>
在课堂上:
package com.example.testaction;
import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
public class MainActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// setTheme(R.style.Sherlock___Theme_Light);
setContentView(R.layout.activity_main);
/*
* actionBar = getSupportActionBar();
* actionBar.setCustomView(R.layout.test_action); actionBar
* .setDisplayOptions
* (com.actionbarsherlock.app.ActionBar.DISPLAY_SHOW_CUSTOM);
*/
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
}
在Android Manifest中添加此样式:
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/CustomActivityTheme" >
它看起来像:
有关详细信息,请查看此artical。