在ActionBar上添加图像并隐藏图标

时间:2014-06-24 14:28:13

标签: android android-actionbar

我需要在ActionBar上做两件事:

  • 首先是在右侧添加图像。
  • 其次,隐藏ActionBar标题的图标/徽标

结果如下:

enter image description here

为了达到第一个目的,我跟随答案here,但它没有将图像放在右侧,它接近标题。这是从该帖子中提取的代码:

ActionBar actionBar = getActionBar();
actionBar.setDisplayOptions(actionBar.getDisplayOptions()
        | ActionBar.DISPLAY_SHOW_CUSTOM);
ImageView imageView = new ImageView(actionBar.getThemedContext());
imageView.setScaleType(ImageView.ScaleType.CENTER);
imageView.setImageResource(R.drawable.ic_launcher);
ActionBar.LayoutParams layoutParams = new ActionBar.LayoutParams(
        ActionBar.LayoutParams.WRAP_CONTENT,
        ActionBar.LayoutParams.WRAP_CONTENT, Gravity.RIGHT
                | Gravity.CENTER_VERTICAL);
layoutParams.rightMargin = 40;
imageView.setLayoutParams(layoutParams);
actionBar.setCustomView(imageView);

这是我的包含布局的imageview:

<RelativeLayout 
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <ImageView
        android:id="@+id/ablogo"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_alignParentTop="true"
        android:src="@drawable/ic_launcher" />
</RelativeLayout>

然后,为了得到第二件事,这就是隐藏默认标题图标,我只是使用它:

ActionBar actionBar = getSupportActionBar();
actionBar.setDisplayShowHomeEnabled(false);

这样做,我隐藏了图标,但是Tabs位于ActionBar上方,即actionBar位于Tabs下方。

1 个答案:

答案 0 :(得分:0)

对于第一个解决方法,我创建了一个布局以设置为自定义actionBar。布局与上面的布局相同,但在MainActivity中定义它的方式会改变:

/*Inflate your custom actionBar layout*/
final ViewGroup actionBarLayout = (ViewGroup) getLayoutInflater().inflate(R.layout.actionbar_logo, null);

/*Ads tabs*/
ActionBar actionBar = getSupportActionBar();
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);

/*Set up your ActionBar*/
actionBar.setDisplayShowHomeEnabled(true);
actionBar.setDisplayShowTitleEnabled(true);
actionBar.setDisplayShowCustomEnabled(true);
actionBar.setCustomView(actionBarLayout);

这样我就可以在右侧设置图标。但仍需要解决标题问题。

对于第二种解决方法,我不会隐藏/禁用图标,我展示它,但后来我将它设置为隐形。这样,标签完全位于actionBar下。

actionBar.setDisplayShowHomeEnabled(true);

View homeIcon = findViewById(android.R.id.home);
    ((View) homeIcon.getParent()).setVisibility(View.GONE);