导航抽屉 + 工具栏 Lollipop 菜单无响应
Navigation Drawer + Toolbar Lollipop Menu not Responding
我在开发 NavigationDrawer
+ Toolbar
菜单时遇到问题。 (全部在 Lollipop 上使用 appcompat v21)
问题是当我在 main_activity 中使用 NavigationDrawer
和 Toolbar
时,听众没有反应。
是sintax的问题还是其他的?
这是我的项目代码:
import android.support.v4.widget.DrawerLayout;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.support.v7.app.ActionBarDrawerToggle;
import android.support.v7.widget.Toolbar;
import android.view.MenuItem;
public class MainActivity extends ActionBarActivity {
private ActionBarDrawerToggle toogle;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final Toolbar toolbar = (Toolbar) findViewById(R.id.tlb_toolbar);
DrawerLayout drawerLayout = (DrawerLayout)findViewById(R.id.drawer_layout);
toolbar.setOnMenuItemClickListener(
new Toolbar.OnMenuItemClickListener(){
@Override
public boolean onMenuItemClick(MenuItem item){
if (item.getItemId()==R.id.info)
{
getSupportFragmentManager().beginTransaction()
.replace(R.id.container, new fragment_2())
.addToBackStack("1")
.commit();
toolbar.getMenu().clear();
toolbar.setLogo(null);
toolbar.setTitle("F.A.Q");
toolbar.inflateMenu(R.menu.menu_second);
return true;
}
if (item.getItemId()==R.id.back) {
getSupportFragmentManager().beginTransaction()
.replace(R.id.container, new BlankFragment())
.addToBackStack("2")
.commit();
toolbar.getMenu().clear();
toolbar.setLogo(R.drawable.ic_launcher);
toolbar.setTitle(R.string.app_name);
toolbar.inflateMenu(R.menu.menu_main);
return true;
}
if (item.getItemId()==R.id.mes)
{
getSupportFragmentManager().beginTransaction()
.replace(R.id.container, new fragment_3())
.addToBackStack("3")
.commit();
toolbar.getMenu().clear();
toolbar.setTitle("Fragments2");
toolbar.inflateMenu(R.menu.menu_second);
}
return false;
}
});
toolbar.setLogo(R.drawable.ic_launcher);
toolbar.setTitle(R.string.app_name);
toolbar.inflateMenu(R.menu.menu_main);
toogle = new ActionBarDrawerToggle(this, drawerLayout, R.string.open,R.string.close);
toogle.setDrawerIndicatorEnabled(true);
drawerLayout.setDrawerListener(toogle);
if (savedInstanceState == null) {
getSupportFragmentManager().beginTransaction()
.add(R.id.container, new BlankFragment())
.commit();
}
}
}
我在布局中使用 Fragment
s。我已经读到 Fragment
s 在 Toolbar
+ NavigationDrawer
布局中存在故障问题证明,我是否遗漏了什么?我能做什么?
主要布局
<android.support.v4.widget.DrawerLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/drawer_layout">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<include layout="@layout/toolbar_tb" />
<FrameLayout
android:layout_below="@+id/tlb_toolbar"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/container"
/>
<!-- MAIN CONTENT -->
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/frame5"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity"
/>
<ListView
android:id="@+id/lv_menuoverflow"
android:layout_width="260dp"
android:layout_gravity="start"
android:layout_height="fill_parent"
android:choiceMode="singleChoice"
android:divider="#2E2E2E"
android:dividerHeight="2dp"
android:background="#ffffff"
android:textColor="#424242"
android:entries="@array/planetes"
/>
</LinearLayout>
</android.support.v4.widget.DrawerLayout>
提前谢谢你
P.S: 对不起我的英语。
您的布局似乎使用了一堆不必要的容器。他们可能会阻止观看,最终消耗该区域的点击次数。
试试这个布局:
<android.support.v4.widget.DrawerLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/drawer_layout">
<LinearLayout
android:id="@+id/container"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<include layout="@layout/toolbar_tb"/>
<FrameLayout
android:id="@+id/fragment_container"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</LinearLayout>
<ListView
android:id="@+id/lv_menuoverflow"
android:layout_width="260dp"
android:layout_gravity="start"
android:layout_height="fill_parent"
android:choiceMode="singleChoice"
android:divider="#2E2E2E"
android:dividerHeight="2dp"
android:background="#ffffff"
android:textColor="#424242"/>
</android.support.v4.widget.DrawerLayout>
我在开发 NavigationDrawer
+ Toolbar
菜单时遇到问题。 (全部在 Lollipop 上使用 appcompat v21)
问题是当我在 main_activity 中使用 NavigationDrawer
和 Toolbar
时,听众没有反应。
是sintax的问题还是其他的?
这是我的项目代码:
import android.support.v4.widget.DrawerLayout;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.support.v7.app.ActionBarDrawerToggle;
import android.support.v7.widget.Toolbar;
import android.view.MenuItem;
public class MainActivity extends ActionBarActivity {
private ActionBarDrawerToggle toogle;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final Toolbar toolbar = (Toolbar) findViewById(R.id.tlb_toolbar);
DrawerLayout drawerLayout = (DrawerLayout)findViewById(R.id.drawer_layout);
toolbar.setOnMenuItemClickListener(
new Toolbar.OnMenuItemClickListener(){
@Override
public boolean onMenuItemClick(MenuItem item){
if (item.getItemId()==R.id.info)
{
getSupportFragmentManager().beginTransaction()
.replace(R.id.container, new fragment_2())
.addToBackStack("1")
.commit();
toolbar.getMenu().clear();
toolbar.setLogo(null);
toolbar.setTitle("F.A.Q");
toolbar.inflateMenu(R.menu.menu_second);
return true;
}
if (item.getItemId()==R.id.back) {
getSupportFragmentManager().beginTransaction()
.replace(R.id.container, new BlankFragment())
.addToBackStack("2")
.commit();
toolbar.getMenu().clear();
toolbar.setLogo(R.drawable.ic_launcher);
toolbar.setTitle(R.string.app_name);
toolbar.inflateMenu(R.menu.menu_main);
return true;
}
if (item.getItemId()==R.id.mes)
{
getSupportFragmentManager().beginTransaction()
.replace(R.id.container, new fragment_3())
.addToBackStack("3")
.commit();
toolbar.getMenu().clear();
toolbar.setTitle("Fragments2");
toolbar.inflateMenu(R.menu.menu_second);
}
return false;
}
});
toolbar.setLogo(R.drawable.ic_launcher);
toolbar.setTitle(R.string.app_name);
toolbar.inflateMenu(R.menu.menu_main);
toogle = new ActionBarDrawerToggle(this, drawerLayout, R.string.open,R.string.close);
toogle.setDrawerIndicatorEnabled(true);
drawerLayout.setDrawerListener(toogle);
if (savedInstanceState == null) {
getSupportFragmentManager().beginTransaction()
.add(R.id.container, new BlankFragment())
.commit();
}
}
}
我在布局中使用 Fragment
s。我已经读到 Fragment
s 在 Toolbar
+ NavigationDrawer
布局中存在故障问题证明,我是否遗漏了什么?我能做什么?
主要布局
<android.support.v4.widget.DrawerLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/drawer_layout">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<include layout="@layout/toolbar_tb" />
<FrameLayout
android:layout_below="@+id/tlb_toolbar"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/container"
/>
<!-- MAIN CONTENT -->
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/frame5"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity"
/>
<ListView
android:id="@+id/lv_menuoverflow"
android:layout_width="260dp"
android:layout_gravity="start"
android:layout_height="fill_parent"
android:choiceMode="singleChoice"
android:divider="#2E2E2E"
android:dividerHeight="2dp"
android:background="#ffffff"
android:textColor="#424242"
android:entries="@array/planetes"
/>
</LinearLayout>
</android.support.v4.widget.DrawerLayout>
提前谢谢你
P.S: 对不起我的英语。
您的布局似乎使用了一堆不必要的容器。他们可能会阻止观看,最终消耗该区域的点击次数。
试试这个布局:
<android.support.v4.widget.DrawerLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/drawer_layout">
<LinearLayout
android:id="@+id/container"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<include layout="@layout/toolbar_tb"/>
<FrameLayout
android:id="@+id/fragment_container"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</LinearLayout>
<ListView
android:id="@+id/lv_menuoverflow"
android:layout_width="260dp"
android:layout_gravity="start"
android:layout_height="fill_parent"
android:choiceMode="singleChoice"
android:divider="#2E2E2E"
android:dividerHeight="2dp"
android:background="#ffffff"
android:textColor="#424242"/>
</android.support.v4.widget.DrawerLayout>