如何在操作栏的右侧添加图像视图?

Posted

技术标签:

【中文标题】如何在操作栏的右侧添加图像视图?【英文标题】:How to add imageview on right hand side of action bar? 【发布时间】:2014-02-06 08:49:54 【问题描述】:

我想在操作栏右侧添加图像视图。我试图这样做,但我做不到。 谁能帮帮我?

这是我的图像视图 xml

 <ImageView
        android:id="@+id/imageView4"
        android:layout_
        android:layout_
        android:layout_alignParentRight="true"
        android:layout_alignParentTop="true"
        android:src="@drawable/adnace_search_i" />

这是我要创建的操作栏的图像。

【问题讨论】:

使用自定义操作栏布局。见vogella.com/tutorials/AndroidActionBar/article.html 使用这个:android:drawableRight="@drawable/your_Image.png" [check this][1] 并使用带有 weightsum 的线性布局。喜欢[这个答案][2] [1]:***.com/a/16029214/1168654 [2]:***.com/a/4517358/1168654 【参考方案1】:

试试这个...

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.adnace_search_i);
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);

【讨论】:

感谢@Gopal,它的作品。你知道如何将操作栏背景颜色更改为这个图像颜色。我的意思是#160203。对于我使用 notitleBar 主题的应用程序,对于这个应用程序我使用应用程序 Theme Light。你有什么想法吗? @anuruddhika 使用 actionBar.setBackgroundDrawable(new ColorDrawable(0xFF160203));... 已更改。非常感谢您的帮助。我是 android 新手。我学到了新东西。谢谢。 嗨,如何在搜索图标后的右侧边缘(即)显示图像视图并为其设置点击事件? @GopalGopi 如何获取点击事件?【参考方案2】:

使用

ActionBar actionBar = getSupportActionBar();
actionBar.setDisplayShowCustomEnabled(true);

LayoutInflater inflator = (LayoutInflater) this .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View v = inflator.inflate(R.layout.custom_imageview, null);

actionBar.setCustomView(v);

自定义代码ImageView

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_
    android:layout_
    android:id="@+id/layout">
    
    <ImageView
        android:id="@+id/imageView4"
        android:layout_
        android:layout_
        android:layout_alignParentRight="true"
        android:layout_alignParentTop="true"
        android:src="@drawable/adnace_search_i" />
</RelativeLayout>

【讨论】:

如何获得 Image View 的点击动作? 使用android的onClickListener方法。您可以使用 ((ImageView)your_root_view).findViewById(R.id.imageview4).setOnClickListener(...);【参考方案3】:

您不需要 ImageView。为您的图像使用使用 Icon 的新项目将是最明智的解决方案。

将此项目添加到您的 menu.xml:

<item
    android:title="@string/action_scanner"
    android:orderInCategory="79"
    android:icon="@drawable/adnace_search_i"
    android:showAsAction="ifRoom|withText" />

onCreateOptionsMenu 中实例化菜单并在onOptionsItemSelected 中实现它。

【讨论】:

【参考方案4】:

将此行添加到 res/menu/menu.xml 中的 menu.xml

<menu xmlns:android="http://schemas.android.com/apk/res/android"
   xmlns:yourapp="http://schemas.android.com/apk/res-auto" >
 <!-- Search, should appear as action button -->
 <item android:id="@+id/action_search"
      android:icon="@drawable/ic_action_search"
      android:title="@string/action_search"
      yourapp:showAsAction="ifRoom"  />
 ...
 </menu>

你可以在android developer tutorials上看到更多的actionBar属性

【讨论】:

【参考方案5】:

使用此布局。我刚刚在 API 28 上使用了它

<android.support.design.widget.AppBarLayout
    android:layout_
    android:layout_
    android:theme="@style/AppTheme.AppBarOverlay">

    <android.support.v7.widget.Toolbar
        android:id="@+id/toolbar"
        android:layout_
        android:layout_
        android:background="?attr/colorPrimary"
        app:popupTheme="@style/AppTheme.PopupOverlay">

        <RelativeLayout
            android:layout_
            android:layout_>

            <ImageView
                android:layout_
                android:layout_
                android:onClick="makeToast"
                android:layout_alignParentEnd="true"
                android:src="@drawable/ic_flag" />
        </RelativeLayout>
    </android.support.v7.widget.Toolbar>

【讨论】:

以上是关于如何在操作栏的右侧添加图像视图?的主要内容,如果未能解决你的问题,请参考以下文章

在 Flex 4 面板的标题栏右侧添加图像

如何更改操作栏上菜单项的位置

如何移动导航栏图像?

如何淡出导航栏的最右侧并向其添加新按钮

html 在导航栏或操作栏的左侧或右侧添加按钮

无法识别导航栏的图像视图上的触摸。?