我有一个自定义操作栏,其中包含两个我想要居中的项目(蓝色按钮)。目前,他们略微偏离中心。我想确保按钮以所有屏幕尺寸为中心。对我来说,最好的方法是什么?
以下是截图:
这是我的XML project_action_bar.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="match_parent"
android:layout_gravity="fill_horizontal"
android:orientation="horizontal">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_centerInParent="true"
android:layout_gravity="center"
android:orientation="horizontal">
<ImageButton
android:id="@+id/list"
android:layout_width="0.0dip"
android:layout_height="wrap_content"
android:layout_weight="1.0"
android:background="@drawable/left_rounded_rect_selected"
android:src="@drawable/list_white"
android:scaleType="fitCenter"
android:adjustViewBounds="true"
android:layout_marginTop="8dp"
android:layout_marginBottom="8dp"
/>
<ImageButton
android:id="@+id/map"
android:layout_width="0.0dip"
android:layout_height="wrap_content"
android:layout_weight="1.0"
android:background="@drawable/right_rounded_rect_deselected"
android:src="@drawable/map_blue"
android:scaleType="fitCenter"
android:adjustViewBounds="true"
android:layout_marginTop="8dp"
android:layout_marginBottom="8dp"
/>
</LinearLayout>
</RelativeLayout>
在我的活动中:
private void showActionBar() {
ActionBar actionBar = getSupportActionBar();
actionBar.setDisplayHomeAsUpEnabled(true);
actionBar.setDisplayShowCustomEnabled(true);
actionBar.setDisplayShowTitleEnabled(false);
ActionBar.LayoutParams lp = new ActionBar.LayoutParams(ActionBar.LayoutParams.MATCH_PARENT, ActionBar.LayoutParams.MATCH_PARENT);
View view = getLayoutInflater().inflate(R.layout.project_action_bar, null);
actionBar.setCustomView(view, lp);
View v = actionBar.getCustomView();
}
我还在这里添加了刷新和下拉菜单:
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
menu.add(Menu.NONE, R.id.refresh, Menu.NONE, "refresh")
.setIcon(R.drawable.ic_action_refresh)
.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
SubMenu optionsMenu = menu.addSubMenu("Options Item");
optionsMenu.add(Menu.NONE, R.id.delete_project, Menu.NONE, "Delete Project")
.setShowAsAction(MenuItem.SHOW_AS_ACTION_NEVER);
optionsMenu.add(Menu.NONE, R.id.logout, Menu.NONE, "Log Out")
.setShowAsAction(MenuItem.SHOW_AS_ACTION_NEVER);
MenuItem optionsMenuItem = optionsMenu.getItem();
optionsMenuItem.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
optionsMenuItem.setIcon(R.drawable.ic_action_overflow);
return super.onCreateOptionsMenu(menu);
}
答案 0 :(得分:0)
按钮在自定义视图中居中,但自定义视图不在操作栏中居中。
自定义视图填充主页图标和菜单操作之间的空间。如果菜单操作比主页图标占用更多空间(就像在您的情况下显然那样),自定义视图将不会在操作栏中居中。
如果你真的想要实现这一点,我的建议是获得屏幕的宽度和主页图标的宽度,然后做一些数学计算,以确定左边距应该是什么,以使按钮出现居中。
您可以在某处找到样式属性中主页图标的宽度(因为宽度因屏幕大小而异)。
我不想弄明白。我只需更改按钮颜色以匹配菜单操作图标并对其进行右对齐。或者可以使用自定义菜单操作视图/操作提供程序而不是自定义标题视图。