我需要在应用程序中添加一个ActionBar, 但它必须是定制的。从左到右依次是:自定义返回按钮、自定义下拉列表、自定义按钮、中间图片以及右边两个自定义按钮。
我的最佳方法是什么?是否可以使用ActionBar,还是最好将其创建为布局?
minSdk版本是14。
我的最佳方法是什么?是否可以使用ActionBar,还是最好将其创建为布局?
minSdk版本是14。
我认为使用ActionBar更好。可以通过自定义下拉列表来设置。
private class MyAdapter extends BaseAdapter {
/**
* View displayed inside the Action Bar
*/
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View resultView = convertView;
if (resultView == null) {
resultView = mLayoutInflater.inflate(R.layout.spinner_main, null);
}
return resultView;
}
/**
* View Displayed inside list of possible options
*/
@Override
public View getDropDownView(int position, View convertView, ViewGroup parent) {
View resultView = convertView;
if (resultView == null) {
resultView = mLayoutInflater.inflate(R.layout.spinner_drop_down, null);
}
return resultView;
}
}
然后
getActionBar().setListNavigationCallbacks(new MyAdapter(), listener);
其他的一些事情,比如自定义后退图标,您可以通过为ActionBar创建样式来实现。
您可以使用SplitActionBar。您的应用程序应在Android 4.0(API级别14)或更高版本上运行。
解决方法是始终在顶部栏中放置一个项目,以防止底部内容适合其中,从而将所有内容强制放入底部栏。请查看另一个用户的此示例项目:
<?xml version="1.0" encoding="utf-8"?
<manifest package="com.commonsware.android.actionbarbc"
xmlns:android="http://schemas.android.com/apk/res/android">
<application android:hardwareAccelerated="true"
android:icon="@drawable/cw"
android:label="@string/app_name">
<activity android:label="@string/app_name"
android:name=".InflationDemo"
android:uiOptions="splitActionBarWhenNarrow">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
<uses-sdk android:minSdkVersion="4"
android:targetSdkVersion="11" />
<supports-screens android:anyDensity="true"
android:largeScreens="true"
android:normalScreens="true"
android:smallScreens="true"
android:xlargeScreens="true" />
</manifest>
他在活动中使用了这段代码:
private void setupActionBar() {
ActionBar actionBar = getActionBar();
ViewGroup v = (ViewGroup)LayoutInflater.from(this)
.inflate(R.layout.conversation_list_actionbar, null);
actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM,
ActionBar.DISPLAY_SHOW_CUSTOM);
actionBar.setCustomView(v,
new ActionBar.LayoutParams(ActionBar.LayoutParams.WRAP_CONTENT,
ActionBar.LayoutParams.WRAP_CONTENT,
Gravity.CENTER_VERTICAL | Gravity.RIGHT));
mUnreadConvCount = (TextView)v.findViewById(R.id.unread_conv_count);
}
http://developer.android.com/guide/topics/ui/actionbar.html#SplitBar