问题描述
我的MainActivity
使用MaterialToolbar作为其顶部应用程序栏。但是,一旦我致电setSupportActionBar
,“溢出操作”按钮(三个点)就会消失,并且我看不到或单击它。
但是,如果我不打setSupportActionBar
,按钮就会出现。我不喜欢这种解决方案,因为当我只想简单地使用Toolbar.onMenuItemClickListener
和AppCompatActivity.onoptionsMenuSelected
时,它会迫使我使用setSupportActionBar
,因为这是应用程序其余部分的构建方式。>
我的layout/activity_main
代码:
<androidx.coordinatorlayout.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">
<com.google.android.material.appbar.AppBarLayout
android:id="@+id/layout_appbar_main"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<com.google.android.material.appbar.MaterialToolbar
android:id="@+id/toolbar_main"
style="@style/Widget.MaterialComponents.Toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
app:menu="@menu/menu_top_app_bar"
app:title="@string/app_name" />
</com.google.android.material.appbar.AppBarLayout>
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
...
...
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.coordinatorlayout.widget.CoordinatorLayout>
我的menu/menu_top_app_bar
代码:
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<!-- Settings,should always be in the overflow -->
<item
android:id="@+id/action_settings"
android:title="@string/action_settings"
app:showAsAction="never" />
</menu>
这是MainActivity
的实现,不起作用。溢出菜单选项不会显示。
public class MainActivity extends AppCompatActivity implements View.OnClickListener{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
findViewById(R.id.button).setonClickListener(this);
mTextLayout = findViewById(R.id.text_layout);
Toolbar toolbar = findViewById(R.id.toolbar_main);
setSupportActionBar(toolbar);
}
@Override
public boolean onoptionsItemSelected(@NonNull MenuItem item) {
switch (item.getItemId()) {
case R.id.action_settings:
Intent intent = new Intent(this,SettingsActivity.class);
startActivity(intent);
return true;
default:
// UnkNown; allow superclass to handle
return super.onoptionsItemSelected(item);
}
}
此实现确实有效,但我希望上述方法可以起作用:
public class MainActivity extends AppCompatActivity implements View.OnClickListener,Toolbar.OnMenuItemClickListener{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
findViewById(R.id.button).setonClickListener(this);
TextLayout = findViewById(R.id.text_layout);
Toolbar toolbar = findViewById(R.id.toolbar_main);
// setSupportActionBar(toolbar);
toolbar.setonMenuItemClickListener(this);
}
@Override
public boolean onMenuItemClick(MenuItem item) {
switch (item.getItemId()) {
case R.id.action_settings:
Intent intent = new Intent(this,SettingsActivity.class);
startActivity(intent);
return true;
default:
return false;
}
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)