问题
i'm developing an application to an Android Tablet (XOOM), and i would like to know if it is possile to put the action bar on the bottom of the screen, instead of the top (which is the default option).
Thanks.
回答1:
if you're getting your ActionBar in an Activity you could just add this android:uiOptions="splitActionBarWhenNarrow" to your manifest for that specific Activity.
That worked for me :)
回答2:
Yes it is possible like this,try this.
public void setActionBArAtBottom(View layoutView, Intent intent,
Context context, ContentValues componentIds) throws Exception {
if (componentIds != null) {
setValues(componentIds);
} else {
System.out
.println("Provide appropriate information to set ActionBar at bottom");
try {
throw new UnsufficientResourcesException();
} catch (UnsufficientResourcesException e) {
e.printStackTrace();
}
}
// getting the parent of screen..actually this is the child of root
// parent...
ViewGroup screenParent = (ViewGroup) layoutView.getParent().getParent();
// now getting actionbarview...as follows...
View actionBArView = ((ViewGroup) screenParent.getChildAt(0))
.getChildAt(0);
// now getting framelayout that is custom layout to display actionbar at
// the bottom...
FrameLayout customActionBarFrameLayout = (FrameLayout) layoutView
.findViewById(BOTTOM_ACTION_BAR_LAYOUT_ID);
// now remove actionbarView from its parent view...
ViewGroup actionBarViewParent = removeFromParent(actionBArView);
removeTitleAndIcon((ViewGroup) actionBArView);
// now setting actionbar view to the framlayout...
customActionBarFrameLayout.addView(actionBArView);
// get the custombar layout....
View customTitleBarLayout = LayoutInflater.from(context).inflate(
NEW_TITLE_BAR_LAYOUT, null);
// setting icon to titile bar...
((ImageView) customTitleBarLayout.findViewById(NEW_TITLE_ICON__ID))
.setImageDrawable(getActivityIcon(intent, context));
// setting title...
((TextView) customTitleBarLayout.findViewById(NEW_TITLE_ID))
.setText(((SherlockActivity) context).getTitle());
// now set this layout to
actionBarViewParent.addView(customTitleBarLayout);
}
// method use to remove child from its parent...
private ViewGroup removeFromParent(View child) {
// removing child...
ViewGroup parentGroup = (ViewGroup) child.getParent();
parentGroup.removeView(child);
return parentGroup;
}
// this method will set application icon to custom title bar layout...
private Drawable getActivityIcon(Intent intent, Context context) {
// getting the current activity icon set...
Drawable drawable = null;
try {
drawable = context.getPackageManager().getActivityIcon(intent);
} catch (NameNotFoundException e) {
e.printStackTrace();
}
return drawable;
}
// remove title and icon from bottombar...
private void removeTitleAndIcon(ViewGroup actionBarViewGroup) {
actionBarViewGroup.removeAllViews();
}
private void setValues(ContentValues contentValues) throws Exception {
try {
BOTTOM_ACTION_BAR_LAYOUT_ID = contentValues
.getAsInteger(BOTTOM_ACTION_BAR_FRAME_LAYOUT_ID);
NEW_TITLE_BAR_LAYOUT = contentValues
.getAsInteger(NEW_TITLE_BAR_LAYOUT_ID);
NEW_TITLE_ICON__ID = contentValues
.getAsInteger(NEW_TITLE_ICON_IMAGEVIEW_ID);
NEW_TITLE_ID = contentValues.getAsInteger(NEW_TITLE_VIEW_ID);
} catch (Exception e) {
throw new UnsufficientResourcesException();
}
}
}
来源:https://stackoverflow.com/questions/7039034/is-it-possible-to-put-android-actionbar-on-the-bottom