删除操作栏带有自定义视图的图标并显示主页向上按钮

时间:2014-03-05 09:51:20

标签: android android-actionbar android-custom-view

我可以在actionbar中添加自定义视图。我的应用程序从版本2.3支持,因此我使用了ActionbarActivity。现在我的查询是从actionbar删除应用程序图标,只有主页图标,即背面图像。

我尝试了很多搜索时找到的选项。但它不适用于自定义视图。

修改

ActionBar actionBar = getSupportActionBar();
    LayoutParams lp = new LayoutParams(LayoutParams.WRAP_CONTENT,
            LayoutParams.WRAP_CONTENT, Gravity.RIGHT
                    | Gravity.CENTER_VERTICAL);
    View customNav = LayoutInflater.from(this).inflate(
            R.layout.custom_action_view, null); // layout which contains

    actionBar.setCustomView(customNav, lp);


    actionBar.setDisplayHomeAsUpEnabled(true);
    actionBar.setDisplayShowHomeEnabled(true);
    actionBar.setDisplayShowCustomEnabled(true);

    actionBar.setBackgroundDrawable(new ColorDrawable(Color
            .parseColor("#a40404")));

帮我解决这个问题。提前谢谢。

2 个答案:

答案 0 :(得分:1)

向上按钮与主页图标相关联。这就是为什么它被称为“home up as up” setDisplayHomeAsUpEnabled(true)

所以你不能用禁用的“home”图标显示箭头。

但是您可以在自定义视图中创建一个类似的视图。

例如:

    <LinearLayout
        android:id="@android:id/home"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:gravity="center_vertical"
        android:orientation="horizontal"
        android:background="?attr/actionBarItemBackground"
        android:paddingRight="5dp">

        <!-- this will show tha up arrow -->
        <ImageView
            android:id="@+id/up"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:src="?attr/homeAsUpIndicator"/>

        <!-- place here any View that will be clickable along with "up" arrow (in this example, it's an icon) -->
        <ImageView
            android:id="@+id/home_icon"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:layout_marginTop="@dimen/action_bar_icon_vertical_padding"
            android:layout_marginBottom="@dimen/action_bar_icon_vertical_padding"
            android:adjustViewBounds="true"
            android:scaleType="fitCenter"
            android:src="@drawable/app_icon"/>

    </LinearLayout>

其中

android:src="?attr/homeAsUpIndicator"

将根据您的主题设置向上箭头。

android:background="?attr/actionBarItemBackground"

将为按下状态设置蓝色选择背景

现在将OnClickListener设置为带箭头的布局

View customNav = LayoutInflater.from(this).inflate(
        R.layout.custom_action_view, null);

customNav.findViewById(android.R.id.home).setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick() {
        // up button clicked
    }
});


actionBar.setCustomView(customNav, lp);

答案 1 :(得分:-1)

删除Actonbar图标

只需在actionBar.setDisplayUseLogoEnabled(false);方法中添加oncreate()这一行:

启用后退按钮

您需要扩展 SherlockActivity 并在oncreate()方法中插入此代码:

getSupportActionBar().setDisplayHomeAsUpEnabled(true);

使用以下代码处理后退按钮操作:

@Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
        case android.R.id.home:
              // do your action here when click on back button showing on action bar
                 onBackPressed();
              }
    }