现在我有这个
但是我要这么做:
<?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
答案 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'
结果
答案 1 :(得分:0)
将android:icon
添加到您的主要活动或您想要此图标的任何活动:
<activity
android:name=".Main"
android:icon="@drawable/ic_settings_white_24dp"
android:launchMode="singleTop">
启用Main.java
中的“主页”图标:
getActionBar().setDisplayShowHomeEnabled( true ); // In your onCreate() or wherever.
您可能还希望在左上方隐藏“后退”图标,在左上方隐藏应用名称。您可以使用以下两个命令来做到这一点:
// Disable back icon in top left and hide app name.
getActionBar().setDisplayHomeAsUpEnabled( false );
getActionBar().setDisplayShowTitleEnabled( false );
要处理点击事件,您只需要捕获home
中的onOptionsItemSelected
:
@Override
public boolean onOptionsItemSelected( MenuItem item ) {
switch( item.getItemId() ) {
case android.R.id.home:
// Do something.
return true;
}
}
为我们工作,最终结果是这样的:
AppCompatActivity
如果您的活动从AppCompatActivity
开始,则您需要做的略有不同。这是对上述步骤的更改:
无需将android:icon
添加到AndroidManifest.xml
。
设置图标以在Main.java
活动中使用并使用getSupportActionBar()
:
getSupportActionBar().setHomeAsUpIndicator( R.drawable.ic_settings_white_24dp );