我正在尝试在Android Activity上实现一个Action Bar,它实现了Jeremy Feinstein的滑动菜单和actionbarSherlock。我面临的问题是将标题文本居中对齐在操作栏中。我的操作栏在文本左侧有一个名为“icon_sliding_menu
”的菜单图标,用于激活左侧菜单滑动操作。
我使用了this示例来编写下面附带的内容。但是,当我添加“getSupportActionBar().setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM);
”行以尝试自定义视图时,我的标题就会消失,我根本看不到任何文字。
ActionBar:
当上面提到的行写在代码中时,ActionBar:
如何将文字与中心对齐?我在下面附上我的代码。
actionbar.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:gravity="center" >
<TextView
android:id="@+id/action_bar_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:textSize="18sp" />
</LinearLayout>
HomeActivity.java
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_home);
final View actionBarLayout = LayoutInflater.from(this).inflate(
R.layout.actionbar, null);
getSupportActionBar().setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM);
getSupportActionBar().setDisplayShowCustomEnabled(true);
getSupportActionBar().setCustomView(actionBarLayout);
getSupportActionBar().setTitle("Home");
getSupportActionBar().setHomeButtonEnabled(true);
initSlidingMenu();
}
private void initSlidingMenu() {
slidingMenu = new SlidingMenu(this);
slidingMenu.setMode(SlidingMenu.LEFT_RIGHT);
slidingMenu.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);
slidingMenu.setAboveOffset(50);
slidingMenu.setBehindOffset(150);
slidingMenu.attachToActivity(this, SlidingMenu.SLIDING_CONTENT);
slidingMenu.setOnOpenListener(new OnOpenListener() {
@Override
public void onOpen() {
getSupportActionBar().setTitle("Menu");
}
});
slidingMenu.setOnCloseListener(new OnCloseListener() {
@Override
public void onClose() {
getSupportActionBar().setTitle("Home");
}
});
slidingMenu.setSecondaryOnOpenListner(new OnOpenListener() {
@Override
public void onOpen() {
getSupportActionBar().setTitle("Current Trip");
}
});
// Add left menu
mTransaction = this.getSupportFragmentManager().beginTransaction();
slidingMenu.setMenu(R.layout.left_menu);
mTransaction.commit();
// Add right menu
mTransaction = this.getSupportFragmentManager().beginTransaction();
slidingMenu.setSecondaryMenu(R.layout.right_menu);
mTransaction.commit();
}
@Override
protected void onResume() {
super.onResume();
getSupportActionBar().setIcon(R.drawable.icon_sliding_menu);
}
答案 0 :(得分:0)
您可以使用ActionBar的titleTextStyle属性来执行此操作。
在styles.xml中,在App主题中,将actionBarTabSyle设置为自定义样式,
<item name="titleTextStyle">@style/TitleTextStyle</item>
继承人CustomActionBarTabs,
<!-- action bar tab styles -->
<style name="TitleTextStyle" parent="@style/TextAppearance.AppCompat.Widget.ActionBar.Title">
<item name="android:textColor">@color/actionbar_text</item>
<item name="android:gravity">center</item> //center the title
</style>
使用此功能,您可以为标题文本设置各种样式,如颜色等。请记住,这只会使ActionBar中提供给标题的空间的文本居中。如果这没有多大帮助,您可以随时创建自己的自定义视图,并将其添加到ActionBar中,
getSupportActionBar().setCustomView(R.layout.action_bar);
如果您想创建自己的布局,请按照以下两个简单步骤操作:
Java代码
getSupportActionBar().setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM);
getSupportActionBar().setCustomView(R.layout.actionbar);
R.layout.actionbar是以下XML。
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="wrap_content"
android:layout_gravity="center"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="YOUR ACTIVITY TITLE"
android:textColor="#ffffff"
android:textSize="24sp" />
</LinearLayout>