在android的操作栏中添加标题左侧的图标

san*_*aid 11 android menu

我想在操作栏的标题左侧添加一个可点击的图标/按钮.怎么做?以下是我已将搜索和设置图标添加到操作栏的代码.它们出现在右边.但我想在标题左侧添加一个新图标.怎么做?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)


Bug*_*der 8

您可以使用以下代码在左侧显示图标.

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)

但它不会被点击.要在左侧创建可点击图标,您需要使用工具栏而不是操作栏.


Mah*_*man 7

您可以执行以下操作:

1-创建你的file_name.xml然后添加Toolbar.

2-添加RelativeLayoutToolbar标签内.

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)

输出:

看到


Ser*_*kar 7

您可以通过以下方式替换默认导航图标(和原因按钮)。

在 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)

结果: Android 工具栏在标题前添加图标