如何为 Toolbar 和 BottomAppBar 扩展两个不同的菜单
How to inflate two different menus for a Toolbar and a BottomAppBar
以下导致模拟器中的 post 安装崩溃。未显示调试信息。
package com.example.myapplication;
import android.os.Bundle;
import com.google.android.material.bottomappbar.BottomAppBar;
import com.google.android.material.tabs.TabLayout;
import androidx.appcompat.widget.Toolbar;
import androidx.viewpager.widget.ViewPager;
import androidx.appcompat.app.AppCompatActivity;
import android.view.Menu;
import android.view.MotionEvent;
import android.view.View;
import android.widget.ImageButton;
import android.widget.ListView;
import com.example.myapplication.ui.main.SectionsPagerAdapter;
public class MainActivity extends AppCompatActivity {
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.top_bar, menu);
return true;
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar top_toolbar = findViewById(R.id.top_toolbar);
setSupportActionBar(top_toolbar);
getSupportActionBar().setDisplayShowTitleEnabled(false);
BottomAppBar bottom_toolbar = findViewById(R.id.bottom_toolbar);
bottom_toolbar.replaceMenu(R.menu.bottom_bar);
SectionsPagerAdapter sectionsPagerAdapter = new SectionsPagerAdapter(this, getSupportFragmentManager());
ViewPager viewPager = findViewById(R.id.view_pager);
viewPager.setAdapter(sectionsPagerAdapter);
TabLayout tabs = findViewById(R.id.tabs);
tabs.setupWithViewPager(viewPager);
ImageButton my_posts_button = findViewById(R.id.my_posts_button);
ImageButton chats_button = findViewById(R.id.chats_button);
ImageButton post_button = findViewById(R.id.post_button);
ImageButton settings_button = findViewById(R.id.settings_button);
ImageButton profile_button = findViewById(R.id.profile_button);
ImageButton sort_button = findViewById(R.id.search_button);
ImageButton search_button = findViewById(R.id.sort_button);
}
}
看起来网站认为我的 post 主要是 code.It 看起来网站认为我的 post 主要是 code.It 看起来网站认为我的 post 主要是代码。
您同时使用了 Toolbar
和 BottomBar
。您只能将 onCreateOptionsMenu
用于 setSupportActionBar
.
中使用的栏
例如:
Toolbar toolbar = findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
和onCreateOptionsMenu
用于Toolbar
菜单:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.toolbar_menu, menu);
return true;
}
然后对于 BottomBar
你可以在布局中使用 app:menu
或者 replaceMenu
方法:
BottomAppBar bottomAppBar = findViewById(R.id.bottomappbar);
bottomAppBar.replaceMenu(R.menu.bottom_bar);
bottomAppBar.setOnMenuItemClickListener(new Toolbar.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
if (item == R.id...){
//....
return true;
}
return false;
}
});
以下导致模拟器中的 post 安装崩溃。未显示调试信息。
package com.example.myapplication;
import android.os.Bundle;
import com.google.android.material.bottomappbar.BottomAppBar;
import com.google.android.material.tabs.TabLayout;
import androidx.appcompat.widget.Toolbar;
import androidx.viewpager.widget.ViewPager;
import androidx.appcompat.app.AppCompatActivity;
import android.view.Menu;
import android.view.MotionEvent;
import android.view.View;
import android.widget.ImageButton;
import android.widget.ListView;
import com.example.myapplication.ui.main.SectionsPagerAdapter;
public class MainActivity extends AppCompatActivity {
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.top_bar, menu);
return true;
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar top_toolbar = findViewById(R.id.top_toolbar);
setSupportActionBar(top_toolbar);
getSupportActionBar().setDisplayShowTitleEnabled(false);
BottomAppBar bottom_toolbar = findViewById(R.id.bottom_toolbar);
bottom_toolbar.replaceMenu(R.menu.bottom_bar);
SectionsPagerAdapter sectionsPagerAdapter = new SectionsPagerAdapter(this, getSupportFragmentManager());
ViewPager viewPager = findViewById(R.id.view_pager);
viewPager.setAdapter(sectionsPagerAdapter);
TabLayout tabs = findViewById(R.id.tabs);
tabs.setupWithViewPager(viewPager);
ImageButton my_posts_button = findViewById(R.id.my_posts_button);
ImageButton chats_button = findViewById(R.id.chats_button);
ImageButton post_button = findViewById(R.id.post_button);
ImageButton settings_button = findViewById(R.id.settings_button);
ImageButton profile_button = findViewById(R.id.profile_button);
ImageButton sort_button = findViewById(R.id.search_button);
ImageButton search_button = findViewById(R.id.sort_button);
}
}
看起来网站认为我的 post 主要是 code.It 看起来网站认为我的 post 主要是 code.It 看起来网站认为我的 post 主要是代码。
您同时使用了 Toolbar
和 BottomBar
。您只能将 onCreateOptionsMenu
用于 setSupportActionBar
.
例如:
Toolbar toolbar = findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
和onCreateOptionsMenu
用于Toolbar
菜单:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.toolbar_menu, menu);
return true;
}
然后对于 BottomBar
你可以在布局中使用 app:menu
或者 replaceMenu
方法:
BottomAppBar bottomAppBar = findViewById(R.id.bottomappbar);
bottomAppBar.replaceMenu(R.menu.bottom_bar);
bottomAppBar.setOnMenuItemClickListener(new Toolbar.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
if (item == R.id...){
//....
return true;
}
return false;
}
});