Android:左侧的菜单项

时间:2019-02-22 23:09:10

标签: android

现在我有这个

enter image description here

但是我要这么做:

enter image description here

<?xml version="1.0" encoding="utf-8"?>

<item
    android:id="@+id/menu"
    android:icon="@drawable/ic_menu"
    android:title="@string/title_menu"
    app:showAsAction="always" />

<item
    android:id="@+id/file"
    android:icon="@drawable/ic_file"
    android:title="@string/title_file"
    app:showAsAction="always" />


<item
    android:id="@+id/new_file"
    android:icon="@drawable/ic_new_file"
    android:title="@string/title_new_file"
    app:showAsAction="always" />


<item
    android:id="@+id/visual"
    android:icon="@drawable/ic_eye"
    android:title="@string/title_eye"
    app:showAsAction="always" />


<item
    android:id="@+id/print"
    android:icon="@drawable/ic_print"
    android:title="@string/title_print"
    app:showAsAction="always" />

<item android:id="@+id/help"
    android:icon="@drawable/ic_help"
    android:title="@string/title_help" />

我在活动中添加此菜单

    override fun onCreateOptionsMenu(menu: Menu): Boolean {
    val inflater = menuInflater
    inflater.inflate(R.menu.designer_options_menu, menu)
    return true
}

我不知道如何在左侧安装ic_menu

2 个答案:

答案 0 :(得分:1)

您可以通过在CoordinatorLayout中使用自定义工具栏来使用向上/主页按钮进行操作:

1。主要布局

<android.support.design.widget.CoordinatorLayout 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"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <android.support.design.widget.AppBarLayout
        android:id="@+id/appbar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">

        <android.support.v7.widget.Toolbar
            android:id="@+id/toolbar"
            android:layout_width="match_parent"
            android:layout_height="?attr/actionBarSize"
            app:popupTheme="@style/ThemeOverlay.AppCompat.Light">

        </android.support.v7.widget.Toolbar>

    </android.support.design.widget.AppBarLayout>

    <!-- My Layout -->
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:layout_behavior="@string/appbar_scrolling_view_behavior">

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Hello World!" />

    </LinearLayout>

</android.support.design.widget.CoordinatorLayout>

2。您的菜单

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">

    <item
        android:id="@+id/folder"
        android:icon="@drawable/ic_folder_black_24dp"
        android:orderInCategory="1"
        android:title=""
        app:showAsAction="always" />

    <item
        android:id="@+id/file"
        android:icon="@drawable/ic_insert_drive_file_black_24dp"
        android:orderInCategory="2"
        android:title=""
        app:showAsAction="always" />

    <item
        android:id="@+id/eye"
        android:icon="@drawable/ic_remove_red_eye_black_24dp"
        android:orderInCategory="3"
        android:title=""
        app:showAsAction="always" />

    <item
        android:id="@+id/print"
        android:icon="@drawable/ic_print_black_24dp"
        android:orderInCategory="4"
        android:title=""
        app:showAsAction="always" />

</menu>

3。 Java

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Toolbar toolbar = findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);

        if (getSupportActionBar() != null) {
            getSupportActionBar().setDisplayHomeAsUpEnabled(true);
            getSupportActionBar().setHomeAsUpIndicator(R.drawable.ic_menu_black_24dp);
            getSupportActionBar().setTitle("");
        }
    }


    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
            case android.R.id.home:
                Toast.makeText(this, "Home", Toast.LENGTH_SHORT).show();
                break;
            case R.id.eye:
                Toast.makeText(this, "Eye", Toast.LENGTH_SHORT).show();
                break;
            case R.id.file:
                Toast.makeText(this, "File", Toast.LENGTH_SHORT).show();
                break;
            case R.id.folder:
                Toast.makeText(this, "Folder", Toast.LENGTH_SHORT).show();
                break;
            case R.id.print:
                Toast.makeText(this, "Print", Toast.LENGTH_SHORT).show();
                break;
        }
        return super.onOptionsItemSelected(item);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.menu, menu);
        return true;
    }
}

4。样式:使用NoActionBar主题

<resources>

    <!-- Base application theme. -->
    <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
        <!-- Customize your theme here. -->
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>
    </style>

</resources>

5。 Gradle::添加用于协调器布局的设计支持库

implementation 'com.android.support:design:28.0.0'

结果

enter image description here

答案 1 :(得分:0)

简单版本

  1. android:icon添加到您的主要活动或您想要此图标的任何活动:

    <activity
      android:name=".Main"
      android:icon="@drawable/ic_settings_white_24dp"
      android:launchMode="singleTop">
    
  2. 启用Main.java中的“主页”图标:

    getActionBar().setDisplayShowHomeEnabled( true ); // In your onCreate() or wherever.
    
  3. 您可能还希望在左上方隐藏“后退”图标,在左上方隐藏应用名称。您可以使用以下两个命令来做到这一点:

    // Disable back icon in top left and hide app name.
    getActionBar().setDisplayHomeAsUpEnabled( false );
    getActionBar().setDisplayShowTitleEnabled( false );
    
  4. 要处理点击事件,您只需要捕获home中的onOptionsItemSelected

    @Override
    public boolean onOptionsItemSelected( MenuItem item ) {
    
      switch( item.getItemId() ) {
    
        case android.R.id.home:
          // Do something.
    
          return true;
    
      }
    }
    

为我们工作,最终结果是这样的:

CNTRAL Mobile™ screenshot

使用AppCompatActivity

如果您的活动从AppCompatActivity开始,则您需要做的略有不同。这是对上述步骤的更改:

  1. 无需将android:icon添加到AndroidManifest.xml

  2. 设置图标以在Main.java活动中使用并使用getSupportActionBar()

    getSupportActionBar().setHomeAsUpIndicator( R.drawable.ic_settings_white_24dp );