如何在操作栏的右侧添加图像视图?
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>
【讨论】:
以上是关于如何在操作栏的右侧添加图像视图?的主要内容,如果未能解决你的问题,请参考以下文章