我想在操作栏的标题左侧添加一个可点击的图标/按钮.怎么做?以下是我已将搜索和设置图标添加到操作栏的代码.它们出现在右边.但我想在标题左侧添加一个新图标.怎么做?XML:
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
tools:context=".ui.home.activities.TransactionSearchActivity">
<item
android:id="@+id/action_search"
android:icon="@android:drawable/ic_menu_search"
android:title="search"
app:actionViewClass="android.support.v7.widget.SearchView"
app:showAsAction="always" />
<item android:id="@+id/action_setting"
android:title="categories"
android:icon="@drawable/icon_settings_h"
app:showAsAction="always"
/>
Run Code Online (Sandbox Code Playgroud)
主要活动
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.main_menu, menu);
return true;
}
Run Code Online (Sandbox Code Playgroud)
May*_*bhi 23
推荐方式
getSupportActionBar().setHomeAsUpIndicator(R.drawable.ic_settings_24dp);// set drawable icon
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
Run Code Online (Sandbox Code Playgroud)
处理图标点击事件
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
Toast.makeText(this, "click..!!", Toast.LENGTH_SHORT).show();
return true;
default:
return super.onOptionsItemSelected(item);
}
}
Run Code Online (Sandbox Code Playgroud)
您可以使用以下代码在左侧显示图标.
getSupportActionBar().setDisplayOptions(ActionBar.DISPLAY_SHOW_HOME |
ActionBar.DISPLAY_SHOW_TITLE | ActionBar.DISPLAY_HOME_AS_UP | ActionBar.DISPLAY_USE_LOGO);
actionBar.setIcon(R.drawable.ic_launcher);
Run Code Online (Sandbox Code Playgroud)
但它不会被点击.要在左侧创建可点击图标,您需要使用工具栏而不是操作栏.
您可以执行以下操作:
1-创建你的file_name.xml然后添加Toolbar.
2-添加RelativeLayout在Toolbar标签内.
3-加你的观点,即(ImageButton,TextView,...)
注:在TextView您添加的称号Toolbar.
示例代码:file_name.xml
<android.support.v7.widget.Toolbar
android:id="@+id/products_toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="@color/colorPrimaryDark"
app:layout_collapseMode="pin"
app:titleTextColor="@android:color/white">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/toolbar_title"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:text="Title"
android:gravity="center"
android:textColor="@android:color/white"
android:textSize="20dp"
android:textStyle="bold"
android:layout_alignParentStart="true"/>
<ImageButton
android:id="@+id/toolbar_button"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:src="@drawable/ic_icon_24dp"
style="@style/Widget.AppCompat.Button.Borderless"
android:layout_alignParentEnd="true"/>
</RelativeLayout>
</android.support.v7.widget.Toolbar>
Run Code Online (Sandbox Code Playgroud)
输出:
您可以通过以下方式替换默认导航图标(和原因按钮)。
在 XML 中定义带有工具栏的常用 UI:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<android.support.design.widget.AppBarLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<android.support.v7.widget.Toolbar
android:id="@id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"/>
</android.support.design.widget.AppBarLayout>
<!-- Here goes your UI -->
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
然后在 onCreate 方法中将您的工具栏设置为 ActionBar
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_menu);
Toolbar toolbar = findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
getSupportActionBar().setDisplayHomeAsUpEnabled(true); // Make toolbar show navigation button (i.e back button with arrow icon)
toolbar.setNavigationIcon(R.drawable.custom_icon); // Replace arrow icon with our custom icon
}
Run Code Online (Sandbox Code Playgroud)
在 onOptionsItemSelected 方法中处理返回导航按钮:
@Override
public boolean onOptionsItemSelected(MenuItem menuItem) {
if (menuItem.getItemId() == android.R.id.home) {
// Do whatever you want
return true;
}
return super.onOptionsItemSelected(menuItem);
}
Run Code Online (Sandbox Code Playgroud)
在 Kotlin 中也是如此
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
setSupportActionBar(toolbar)
supportActionBar?.setDisplayHomeAsUpEnabled(true) // Important step, we enable button on the left side of the toolbar
toolbar.navigationIcon = getDrawable(R.drawable.custom_icon) // Here we change default navigation button icon
}
override fun onOptionsItemSelected(item: MenuItem): Boolean {
return when (item.itemId) {
android.R.id.home -> {
doSomething() // Here we can perform any action
true
}
else -> super.onOptionsItemSelected(item)
}
}
private fun doSomething() {
Toast.makeText(this, "Hello", Toast.LENGTH_LONG).show()
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
23425 次 |
| 最近记录: |