动作条上侧面标志中心和行动物品(ActionBar logo centered and Action

2019-06-18 10:56发布

我怎么能做出动作条有标志在中央及两侧的两个行动项目也是这样吗?

我将使用的ActionBar福尔摩斯。

Answer 1:

正如我在评论指出的那样,我不是很确定是否有任何这将与ABS改变(我敢肯定,没有多少会),但与标准的操作栏,你可以加载你的动作条标题自定义布局的.xml。 例如,你可以有action_bar_title.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:background="@drawable/your_desired_background" >

<TextView
        android:id="@+id/title"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerInParent="true"
            android:maxLines="1"
            android:ellipsize="end"
            android:text="@string/app_name"
            android:textAppearance="?android:attr/textAppearanceMedium"/>

</RelativeLayout>

然后,在你的活动,你会想调用这样的方法的onCreate():

private void setupActionBar() {
        ActionBar ab = getActionBar();
        ab.setDisplayShowCustomEnabled(true);
        ab.setDisplayShowTitleEnabled(false);
        ab.setIcon(R.drawable.your_left_action_icon);
        LayoutInflater inflator = (LayoutInflater) this
                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        View v = inflator.inflate(R.layout.action_bar_title, null);

        TextView titleTV = (TextView) v.findViewById(R.id.title);
        Typeface font = Typeface.createFromAsset(getAssets(),
                "fonts/your_custom_font.ttf");
        titleTV.setTypeface(font);

        ab.setCustomView(v);

            ab.setHomeAsUpEnabled(true);
    }

采取左侧行动项目的控制,你可以在你的活动做到这一点:

@Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
        case R.id.yourRightActionItem:
                        //do something
                        return true;
        case android.R.id.home: //<-- this will be your left action item
            // do something
            return true;
        default:
            return super.onOptionsItemSelected(item);
        }
    }

当然,要确保你也做的行动项目的其他必要的设置在菜单的xml的为好。 这将是任何右路行动项目。

编辑:在其他评论刚看到你说的那个标题将是一个图像。 如果是这样的情况下,只需更换我在示例中使用您的ImageView TextView的,而忽略在setupActionBar()方法中的字体自定义代码。

EDIT2:我更新了我的Java代码。 你需要做的ab.setHomeAsUpEnabled(真),然后有一个自定义主题,以实现一种无形的(或者也许@null虽然我不知道,如果Android将会接受)为家庭高达指标绘制。 看到这里(从答案采取这里 :)

<style name="Theme.MyFancyTheme" parent="android:Theme.Holo">
    <item name="android:homeAsUpIndicator">@drawable/my_fancy_up_indicator</item>
    <!-- or you could try @null -->
</style>


文章来源: ActionBar logo centered and Action items on sides