标签: navigation-drawer

无法实例化ExpandableListAdapter类型

我尝试在导航抽屉中创建一个ExpandableListView.我尝试了一个示例代码但是在编译之前我遇到了这个错误.

public class MainActivity extends Activity {

     ExpandableListAdapter listAdapter;
    ExpandableListView expListView;
    List<String> listDataHeader;
    HashMap<String, List<String>> listDataChild;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        // get the listview
        expListView = (ExpandableListView) findViewById(R.id.left_drawer);

        // preparing list data
        prepareListData();

   listAdapter = new ExpandableListAdapter(this, listDataHeader, listDataChild);
Run Code Online (Sandbox Code Playgroud)

错误在这一行:listAdapter = new ExpandableListAdapter(this,listDataHeader,listDataChild);

为什么它说无法实例化ExpandableListAdapter类型?

java android expandablelistview navigation-drawer

1
推荐指数
1
解决办法
5844
查看次数

如何在导航抽屉中放置2个ListView?

这是我的导航drawer_main的xml架构...我必须将用户图像放在上面的列表视图中,其他数据通过第二列表视图,就像soundcloud一样.但我在导航抽屉按钮中得到第二个listview,并通过移动边缘我得到第一个抽屉..帮我结合两个XML代码

<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/drawer_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >    

    <FrameLayout
        android:id="@+id/content_frame"
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

    <ListView
        android:id="@+id/linerlayout_drawer"
        android:layout_height="match_parent"
        android:layout_width="240dp"
        android:layout_gravity="start"
        android:background="@color/white"
        android:choiceMode="singleChoice"
        android:divider="@android:color/transparent"
        android:dividerHeight="0dp"
        android:layout_weight="1"/>

    <ListView
        android:id="@+id/listview_drawer"
        android:layout_height="match_parent"
        android:layout_width="240dp"
        android:layout_gravity="start"
        android:background="@color/white"
        android:choiceMode="singleChoice"
        android:divider="@android:color/transparent"
        android:dividerHeight="0dp"
        android:layout_weight="1" />

</android.support.v4.widget.DrawerLayout>
Run Code Online (Sandbox Code Playgroud)

如果我将它们包装在线性布局中则会出错

04-08 21:08:36.605: E/AndroidRuntime(9373): FATAL EXCEPTION: main
04-08 21:08:36.605: E/AndroidRuntime(9373): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.ZDevelopers.Workmania/com.ZDevelopers.Workmania.MainActivity}: java.lang.ClassCastException: android.widget.LinearLayout$LayoutParams cannot be cast to android.support.v4.widget.DrawerLayout$LayoutParams
04-08 21:08:36.605: E/AndroidRuntime(9373):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2295)
04-08 21:08:36.605: E/AndroidRuntime(9373):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2349)
04-08 21:08:36.605: E/AndroidRuntime(9373):     at android.app.ActivityThread.access$700(ActivityThread.java:159)
04-08 21:08:36.605: E/AndroidRuntime(9373):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1316)
04-08 21:08:36.605: …
Run Code Online (Sandbox Code Playgroud)

xml android listview android-listview navigation-drawer

1
推荐指数
1
解决办法
1930
查看次数

使用 android-support-v7:21 库的工具栏上未显示 ActionBarDrawerToggle

尝试从 android-support-v7:21 库实现新的抽屉切换,但未显示。代码片段:

public class MainActivity extends ActionBarActivity {

    private Toolbar mToolbar;
    private DrawerLayout mDrawerLayout;
    private ActionBarDrawerToggle mDrawerToggle;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        initToolbar();
    }

    private void initToolbar() {
        mToolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(mToolbar);

        mDrawerLayout = (DrawerLayout) findViewById(R.id.drawerLayout);
        mDrawerToggle = new ActionBarDrawerToggle(
                this,
                mDrawerLayout,
                mToolbar,
                R.string.drawer_open,
                R.string.drawer_close
        );
        mDrawerLayout.setDrawerListener(mDrawerToggle);
    }
}
Run Code Online (Sandbox Code Playgroud)

android android-support-library navigation-drawer android-toolbar

1
推荐指数
1
解决办法
3025
查看次数

从导航抽屉ActionBar中删除应用程序图标不起作用

我正在开发一个具有设计要求的应用程序,因为它应该只有ActionBar上的Title而不是App Icon.我尝试了从StackOverflow中找到的各种解决方案

getActionBar().setDisplayUseLogoEnabled(false);

    getActionBar().setDisplayShowHomeEnabled(false);

    getActionBar().setIcon(null);
Run Code Online (Sandbox Code Playgroud)

但是到目前为止这些都没有工作,即使我试图通过制作透明的ic_launcher图标并将其放入manifest.xml来进行黑客/修复,但它会导致App安装图标变得透明.请帮忙

getActionBar().setDisplayShowHomeEnabled(false);
Run Code Online (Sandbox Code Playgroud)

在4.4 kitkat中完美运行,但在降级版本中显示了这样的后退箭头在此输入图像描述

我需要像这样在每个设备上工作

在此输入图像描述

android android-actionbar navigation-drawer

1
推荐指数
2
解决办法
5135
查看次数

调用isDrawerOpen时导航抽屉崩溃

我正在尝试在android studio中实现导航抽屉。我发现的所有示例似乎都在使用ListView,我更喜欢linearLayout。

我遇到的问题是,当我调用isDrawerOpen时,我的应用程序崩溃并显示为“找不到重力向左的抽屉视图”。

我整天都在Stack和Google上进行搜索,但找不到任何有效的方法。我试过了:

navDrawerLayout.isDrawerOpen(Gravity.LEFT)
navDrawerLayout.isDrawerOpen(Gravity.RIGHT)
navDrawerLayout.isDrawerOpen(GravityCompat.START)
navDrawerLayout.isDrawerOpen(GravityCompat.END)
navDrawerLayout.isDrawerOpen(navLinearLayout)
android:gravity="left"
android:gravity="start"
android:gravity="left|start"
android:gravity="start|left"
android:gravity="right"
android:gravity="end"
android:gravity="right|end"
android:gravity="end|right"
Run Code Online (Sandbox Code Playgroud)

以上所有组合,但似乎无济于事。我还能做错什么导致这次崩溃?

MainActivity.java

import android.content.res.Configuration;
import android.os.Bundle;
import android.support.v4.view.GravityCompat;
import android.support.v4.widget.DrawerLayout;
import android.support.v7.app.ActionBarActivity;
import android.support.v7.app.ActionBarDrawerToggle;
import android.support.v7.widget.Toolbar;
import android.view.Gravity;
import android.view.MenuItem;
import android.view.View;
import android.widget.LinearLayout;

public class MainActivity extends ActionBarActivity {

    private Toolbar toolbar;
    private DrawerLayout navDrawerLayout;
    private ActionBarDrawerToggle actionBarDrawerToggle;
    private LinearLayout navLinearLayout;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        loadToolbar();
        loadNavigationDrawer();
    }

    private void loadNavigationDrawer() {
        navDrawerLayout = (DrawerLayout) findViewById(R.id.nav_drawer_layout);
        navLinearLayout = …
Run Code Online (Sandbox Code Playgroud)

android gravity android-linearlayout navigation-drawer

1
推荐指数
1
解决办法
5608
查看次数

带有RecyclerView的Android抽屉在底部添加页脚

我正在尝试在菜单底部添加页脚(facebook行).

我正在使用带有回收器视图的抽屉来查看菜单中的项目.

我跟着这个tuto,只是mod MyAdapter来检测页脚并在这种情况下使用页脚布局.

如何在底部输入最后一项菜单?与相同,但具有回收者视图

菜单

android navigation-drawer android-recyclerview

1
推荐指数
1
解决办法
1558
查看次数

使用ViewPagerAdapter在TabLayout中未调用片段onCreateView方法

我已按照此链接实施使用Tabs的 tablayout Android Material Design

现在我做了什么,我使用片段代替Activity for tablayout.

以下是代码: -

public class HopitalTabLayoutFragment extends Fragment {

private TabLayout tabLayout;
private ViewPager viewPager;

public HopitalTabLayoutFragment() {

}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {

    View view = inflater.inflate(R.layout.fragment_hopital_tab_layout, container, false);

    viewPager = (ViewPager)view. findViewById(R.id.viewpager);
    setupViewPager(viewPager);

    tabLayout = (TabLayout)view. findViewById(R.id.tabs);
    tabLayout.setupWithViewPager(viewPager);

    return view;
}

private void setupViewPager(ViewPager viewPager) {
    ViewPagerAdapter adapter = new ViewPagerAdapter(getFragmentManager());

    adapter.addFragment(new OneFragment(), "ONE");
    adapter.addFragment(new TwoFragment(), "TWO");
    adapter.addFragment(new ThreeFragment(), "THREE");

    viewPager.setAdapter(adapter);
}

class ViewPagerAdapter extends …
Run Code Online (Sandbox Code Playgroud)

android android-viewpager navigation-drawer android-tablayout

1
推荐指数
1
解决办法
2380
查看次数

Android NavigationDrawer按状态栏重叠

我已经看到很多关于在导航栏上面设置半透明状态栏的问题,如下所示:

在此输入图像描述

但我想要实现的是拥有一个非半透明的状态栏,并使导航抽屉标题视图与操作栏的高度相同.这适用于前棒棒糖设备(API <21).但是对于API 21+,整个导航抽屉刚刚向上移动并与状态栏重叠,而不是位于状态栏下方.我能想到的唯一工作是手动设置layout_marginTopAPI 21+之后的设备的标题视图.有没有更好的解决方案来解决所有设备?

API <21:

在此输入图像描述

API> 21:

在此输入图像描述

styles.xml(V21):

<resources>
    <style name="AppTheme.NoActionBar">
        <item name="windowActionBar">false</item>
        <item name="windowNoTitle">true</item>
    </style>
</resources>
Run Code Online (Sandbox Code Playgroud)

DrawerLayout:

    <include
        layout="@layout/app_bar_main"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

    <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="false"
        app:headerLayout="@layout/nav_header_main"
        app:menu="@menu/activity_main_drawer" />

</android.support.v4.widget.DrawerLayout>
Run Code Online (Sandbox Code Playgroud)

我试图设置fitsSystemWindows为两个truefalse.没有变化.

这是初始化导航抽屉时我的黑客解决方案(这也是@AkashBhave回答):

    LinearLayout navigationHeader = (LinearLayout) navigationView.getHeaderView(0);
    if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP) {
        // This is make sure navigation header is below status bar
        // This only required for devices API >= 21
        LinearLayout.LayoutParams layoutParams =
                (LinearLayout.LayoutParams) navigationHeader.getLayoutParams(); …
Run Code Online (Sandbox Code Playgroud)

android statusbar navigation-drawer

1
推荐指数
2
解决办法
3073
查看次数

如何降低导航抽屉,以便actionBar不会切断标题?

我知道我可以让导航标题滑过actionBar,但我只想将整个导航抽屉向下移动,因为我想保持"Back Pressed"按钮和actionBar始终可见.如何将导航抽屉全部降低,使其直接显示在actionBar下.

这是现在的样子,导航标题被actionBar切断:

在此输入图像描述

这是导航抽屉的代码:

<android.support.design.widget.NavigationView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="start"
    app:menu="@menu/menu_info"
    app:headerLayout="@layout/navigation_header"
    app:itemIconTint="#000000"
    app:itemBackground="@drawable/color_press_navigation"
    android:id="@+id/Navigation_header"
    >

</android.support.design.widget.NavigationView>
Run Code Online (Sandbox Code Playgroud)

android android-actionbar navigation-drawer

1
推荐指数
1
解决办法
483
查看次数

Android - 防止导航抽屉覆盖标题栏

我最近在Android Studio中打开了一个项目,并选择了一个导航抽屉活动.它创建了导航抽屉,除了它以我不喜欢的方式显示 - 导航抽屉显示在标题栏的顶部,例如:

相反,我希望它像:

在这个"正确"的示例中,标题栏 - "主页"与关闭箭头一起显示,同时导航抽屉打开.

文件来源:

app_bar_main.xml

<?xml version="1.0" encoding="utf-8"?>
<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="com.avi12.soundcloudinstantdownloader.MainActivity"
    android:fitsSystemWindows="true">

<android.support.design.widget.AppBarLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:theme="@style/AppTheme.AppBarOverlay">

    <android.support.v7.widget.Toolbar
        android:id="@+id/toolbar"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:background="?attr/colorPrimary"
        app:popupTheme="@style/AppTheme.PopupOverlay"/>

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

<RelativeLayout
    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"
    app:layout_behavior="@string/appbar_scrolling_view_behavior"
    tools:context="com.avi12.soundcloudinstantdownloader.MainActivity"
    tools:showIn="@layout/app_bar_main">


    <TextView
        android:id="@+id/textView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:layout_alignParentTop="true"
        android:layout_margin="5dp"
        android:layout_marginLeft="16dp"
        android:layout_marginStart="16dp"
        android:layout_marginTop="16dp"
        android:text="What this app can download:"/>

    <TextView
        android:id="@+id/textView8"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/textView"
        android:layout_alignStart="@+id/textView"
        android:layout_below="@+id/textView"
        android:layout_marginLeft="17dp"
        android:layout_marginStart="17dp"
        android:text="Single tracks"/>

    <TextView
        android:id="@+id/textView9"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/textView8"
        android:layout_alignStart="@+id/textView8"
        android:layout_below="@+id/textView8"
        android:text="Playlists, a.k.a albums"/>

    <TextView
        android:id="@+id/textView10" …
Run Code Online (Sandbox Code Playgroud)

user-interface android kotlin navigation-drawer

1
推荐指数
1
解决办法
256
查看次数