【问题标题】:Navigation drawer shows no items导航抽屉不显示任何项目
【发布时间】:2019-02-05 15:27:31
【问题描述】:

我的导航抽屉没有显示任何项目。我将背景更改为白色,主题已更改,但仍然没有显示任何项目。我也在使用抽屉内的框架布局和线性布局。没有错误或消息。我究竟做错了什么?

编辑:我过分简化了我的工作,但仍然一无所获。没有项目..

EDIT2:删除更多内容后,我取得了一些进展,现在我看到,在预览中,我的抽屉菜单显示为右上角的选项菜单,即使在 postLoginactivity.xml 文件预览中显示了什么我的目标是这样做。模拟器上仍然没有项目。

EDIT3:我已将我的代码切成两半,但仍然看不出我做错了什么。

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

<android.support.v4.widget.DrawerLayout 
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:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
>
<!-- burdan sonra komple sıkıntı gibi?-->
<LinearLayout
    android:id="@+id/llayout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">


    <android.support.v7.widget.Toolbar
        android:id="@+id/toolbar"
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:background="@color/colorPrimary"
        android:elevation="4dp"
        android:theme="@style/ThemeOverlay.AppCompat.Light" >

    <TextView
        android:id="@+id/textView"
        android:layout_width="326dp"
        android:layout_height="45dp"

        android:layout_marginStart="8dp"
        android:layout_marginTop="8dp"
        android:layout_marginEnd="8dp"
        android:accessibilityLiveRegion="assertive"
        android:paddingStart="100dp"
        android:paddingEnd="100dp"
        android:text="@string/deneme"
        android:textSize="30sp"
        android:visibility="visible"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />
    </android.support.v7.widget.Toolbar>
    <!-- android:layout_height=?attr/actionBarSize-->


    <FrameLayout
        android:id="@+id/mainFrameLayout"
        android:layout_width="match_parent"
        android:layout_height="match_parent"

        app:layout_constraintTop_toBottomOf="parent"
        tools:layout_editor_absoluteX="0dp"/>








</LinearLayout>


<android.support.design.widget.NavigationView
    android:id="@+id/nav_view"
    android:layout_width="240dp"
    android:layout_height="match_parent"
    android:layout_gravity="start"
    app:headerLayout="@layout/nav_header"
     >
<ExpandableListView
    android:id="@+id/list_sliderMenu"
    android:layout_width="240dp"
    android:layout_height="match_parent"
    android:layout_gravity="start"
    android:paddingTop="176dp"
    android:choiceMode="singleChoice"
    android:divider="@android:color/transparent"
    android:dividerHeight="1dp"
    />

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


</android.support.v4.widget.DrawerLayout>





nav_header.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="176dp"
android:background="@color/colorPrimary"
android:gravity="bottom"
android:padding="16dp"
android:theme="@style/ThemeOverlay.AppCompat.Dark"
android:orientation="vertical"
>

<ImageView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:src="@mipmap/ic_launcher_round"/>

</LinearLayout>




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

<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
>
<!--tools:showIn="navigation_view"-->




<group android:checkableBehavior="single"
    android:id="@+id/menu_list">

    <item android:title="@string/satisYonetimi"
        android:id="@+id/satis_yonetimi"/>
    <item
        android:id="@+id/insanKaynaklari"

        android:title="@string/insanKaynaklari" />
    <item
        android:id="@+id/muhasebeYonetimi"

        android:title="@string/muhasebeYonetimi" />
    <item
        android:id="@+id/aktiviteYonetimi"

        android:title="@string/aktiviteYonetimi" />
    <item
        android:id="@+id/destekYonetimi"

        android:title="@string/destekYonetimi" />

</group>
</menu>





styles.xml
<resources>

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

<style name="AppTheme.NoActionBar" parent="@style/AppTheme" >
    <item name="windowActionBar">false</item>
    <item name="windowNoTitle">true</item>
</style>

</resources>


 v21\styles.xml
 <resources>

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

<style name="AppTheme.NoActionBar" parent="@style/AppTheme" >
    <item name="windowActionBar">false</item>
    <item name="windowNoTitle">true</item>
</style>

</resources>

另外,如果有人认为问题可能出在其他地方,这里有 category.java(可扩展列表)、subcategory.java(将实现未来的子菜单)以及我要显示的抽屉的活动(正在实现中)

category.java

public class Category {
private String cat_name;
private  int cat_code;

public void setCat_name(String cat_name) {
    this.cat_name = cat_name;
}
public String getCatName(){
    return cat_name;
}

public void setCat_code(int cat_code) {
    this.cat_code = cat_code;
}

public int getCat_code() {
    return cat_code;
}
}



subcategory.java
public class SubCategory {
private String subcat_name;
private  String subcat_code;

public void setSubCatName(String subcat_name) {
    this.subcat_name = subcat_name;
}
public String getSubCatName(){
    return subcat_name;
}

public void setSubCatCode(String subcat_code) {
    this.subcat_code = subcat_code;
}

public String getSubCatCode() {
    return subcat_code;
}
}


postLogingActicity.java
import android.app.ActionBar;
import android.app.Activity;
import android.os.Bundle; 
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.view.GravityCompat;
import android.support.v4.view.ViewPager;
import android.support.v4.widget.DrawerLayout;
import android.support.v7.app.ActionBarDrawerToggle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.LayoutInflater;
import android.view.Menu;  
import android.view.MenuInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ExpandableListView;

import java.util.ArrayList;


public class PostLoginActivity extends AppCompatActivity  {

ActionBar bar;
ViewPager viewPager;
FragmentPagerAdapter fpAdapter;
Fragment mMainScreen;

private DrawerLayout mDrawerLayout;
private ActionBarDrawerToggle mDrawerToggle;
private ExpandableListView mCategoryList;

private ArrayList<Category> category_name = new ArrayList<Category>();
private ArrayList <ArrayList<Category>> subcategory_name = new ArrayList 
<ArrayList<Category>>();
private ArrayList<Integer> subCatCount = new ArrayList<Integer>();

int previousGroup;

@Override
protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_post_login);     

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

    //mDrawerLayout = findViewById(R.id.drawer_layout);

    //ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(this, 
 //mDrawerLayout, toolbar,
     //       R.string.navigation_drawer_open, 
//R.string.navigation_drawer_close);
    //mDrawerLayout.addDrawerListener(toggle);
    //toggle.syncState();

    //this.getCatData();
    //Utils.deleteStringFromSp(this, "email");        
}

public void onBackPressed(){
    if(mDrawerLayout.isDrawerOpen(GravityCompat.START))
        mDrawerLayout.closeDrawer(GravityCompat.START);
    else
        super.onBackPressed();

}
}

【问题讨论】:

    标签: android navigation-drawer android-framelayout


    【解决方案1】:

    您的主要活动必须如下

    <android.support.v4.widget.DrawerLayout 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:id="@+id/drawer_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layoutDirection="rtl"
    android:fitsSystemWindows="true"
    tools:openDrawer="start">
    
    
    
    <android.support.design.widget.NavigationView
        android:id="@+id/nav_view"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_gravity="start"
        android:fitsSystemWindows="true"
        app:menu="@menu/activity_main_drawer" />
    
       </android.support.v4.widget.DrawerLayout>
    

    还有activity_main_drawer

    <?xml version="1.0" encoding="utf-8"?>
    <menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    tools:showIn="navigation_view">
    
    <group android:checkableBehavior="single">
    
    
        <item
            android:id="@+id/nav_menu7"
            android:icon="@drawable/ic_school_black_24dp"
            android:title="XXXX" />
    
        <item
            android:id="@+id/nav_menu11"
            android:icon="@drawable/ic_thumb_up_black_24dp"
            android:title="XXXX" />
    
        <item
            android:id="@+id/nav_menu12"
            android:icon="@drawable/ic_insert_drive_file_black_24dp"
            android:title="XXXX" />
    
        <item
            android:id="@+id/nav_menu6"
            android:icon="@drawable/ic_developer_mode_black_24dp"
            android:title="XXXX" />
    </group>
    
    </menu>
    

    在 Kotlin 中 导航菜单

        // Navigate Menu
        override fun onNavigationItemSelected(item: MenuItem): Boolean {
        // Handle navigation view item clicks here.
        when (item.itemId) {
    
    
    
            R.id.nav_menu7 -> {
    
    
                val intent = Intent(this, Computer::class.java)
                startActivity(intent)
            }
            R.id.nav_menu6 -> {
    
                val menu6 = Menu6()
                val fragmentManager = supportFragmentManager
                fragmentManager.beginTransaction().replace(R.id.fragment,  menu6).addToBackStack(null).commit()
            }
    
            R.id.nav_menu12 -> {
    
                val intent = Intent(Intent.ACTION_VIEW,    Uri.parse("https://XXXXX"))
                startActivity(intent)
            }
    
    
        }
        drawer_layout.closeDrawer(GravityCompat.START)
        return true
        }
    

    我希望这能解决你的问题 菜单适用于 Activity、Fragment、URL

    【讨论】:

    • 创建图标并没有解决问题。什么是 layout="@layout/app_bar_main"?我没有。从 navigationView 中删除可扩展列表视图也没有任何区别。和 android:layoutDirection="rtl" 一样。感谢您的尝试。
    • 我给你的想法,你必须做你的更新,再次看到我将更新并在 Kotlin 中提供代码
    【解决方案2】:

    您错过了引用导航视图的菜单

    正如您将其命名为“drawer_menu_xml”,那么修改将是:

    <android.support.design.widget.NavigationView
        android:id="@+id/nav_view"
        android:layout_width="240dp"
        android:layout_height="match_parent"
        android:layout_gravity="start"
        app:headerLayout="@layout/nav_header"
        app:menu="@menu/drawer_menu"/>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-01-04
      • 2023-04-07
      • 1970-01-01
      • 2016-10-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多