我正在开发一个使用侧面导航抽屉的应用程序。 我试图使导航栏幻灯片与操作栏一起移到右侧,然后就完成了。 但是,当操作栏移到右侧时,导航抽屉中的ListView不会填满该空间。 它只是留下一个空白的空白空间。 请帮忙。

下面是我的代码:

myActivity.xml:

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

    <ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
        <LinearLayout
            xmlns:tools="http://schemas.android.com/tools"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:paddingTop="16dp"
            android:paddingBottom="@dimen/activity_vertical_margin"
            android:paddingLeft="@dimen/activity_horizontal_margin"
            android:paddingRight="@dimen/activity_horizontal_margin"
            android:orientation="vertical"
            android:weightSum="1">

    <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Random Text"
            android:id="@+id/lbl_title"
            android:gravity="center_horizontal"
            android:layout_alignParentTop="true"
            android:layout_centerHorizontal="true"
            android:textStyle="bold"
            android:textSize="@dimen/_20sdp"
            android:layout_gravity="center_horizontal" />

    </LinearLayout>
    </ScrollView>

    <ListView

        android:id="@+id/navList"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_gravity="left|start"
        android:background="#ffeeeeee"
        android:fitsSystemWindows="true" />

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

MyActivity.java

        protected void onCreate(Bundle savedInstanceState) {
        requestWindowFeature(Window.FEATURE_ACTION_BAR_OVERLAY);
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_current_job);

        //setup list header
        listHeaderView = View.inflate(this,R.layout.menuheaderview, null);

        //setup drawer
        mDrawerList = (ListView)findViewById(R.id.navList);
        mDrawerLayout = (DrawerLayout)findViewById(R.id.drawer_layout);
        double width=(getResources().getDisplayMetrics().widthPixels/100.00)*75;    //drawer layout width in percentage

        int w = (int)width;

        DrawerLayout.LayoutParams params =                     (android.support.v4.widget.DrawerLayout.LayoutParams) mDrawerList.getLayoutParams();
        params.width = w;

        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
        getSupportActionBar().setHomeButtonEnabled(true);
        getSupportActionBar().setHomeAsUpIndicator(R.drawable.icon_drawer);

        mDrawerList.setLayoutParams(params);
        addDrawerItems();
        setupDrawer();
    }

addDrawerItems函数

private void addDrawerItems() {

    //add items operations
    mAdapter = new MyCustomAdapter(menu,this);
    mDrawerList.setAdapter(mAdapter);
    mDrawerList.setOnItemClickListener(new AdapterView.OnItemClickListener()          {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            Toast.makeText(myActivity.this, "You selected ", Toast.LENGTH_SHORT).show();
        }
    });
}

setupDrawer函数

private void setupDrawer() {
mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout,
        R.string.drawer_open, R.string.drawer_close) {

    /** Called when a drawer has settled in a completely open state. */
    public void onDrawerOpened(View drawerView) {

        invalidateOptionsMenu(); // creates call to onPrepareOptionsMenu()
    }

    /** Called when a drawer has settled in a completely closed state. */
    public void onDrawerClosed(View view) {

        invalidateOptionsMenu(); // creates call to onPrepareOptionsMenu()
    }

    @Override
    public void onDrawerSlide(View drawerView, float slideOffset) {
        super.onDrawerSlide(drawerView, slideOffset);

        float xPositionOpenDrawer = mDrawerList.getWidth();
        float xPositionWindowContent = (slideOffset * xPositionOpenDrawer);
        getActionBarView().setX(xPositionWindowContent);
    }
};
mDrawerToggle.setDrawerIndicatorEnabled(true);
mDrawerToggle.setHomeAsUpIndicator(R.drawable.icon_drawer);
mDrawerLayout.setDrawerListener(mDrawerToggle);
}

getActionBarView函数

public View getActionBarView() {

    Window window = this.getWindow();
    final View decorView = window.getDecorView();
    final String packageName =  getPackageName();
    final int resId =        this.getResources().getIdentifier("action_bar_container", "id", packageName);
    final View actionBarView = decorView.findViewById(resId);
    return actionBarView;
}

请帮助我,我确实尽了最大努力,但仍然找不到任何解决方案。

NavigationDrawer问题

===============>>#1 票数:0

如果需要这种效果,请考虑使用工具栏而不是ActionBar。 使用工具栏对象支持作为操作栏。 它提供了灵活性,可以将工具栏放置在布局文件中的任何位置,就像布局中的任何其他视图一样。

  ask by veeyikpong translate from so

未解决问题?本站智能推荐:

1回复

操作栏,带有列表视图的导航抽屉

我是android编程的新手,并尝试实现从数据库中填充的listview 。 我想有一个actionbar导航抽屉里我的应用程序。 但是,随着mainactivity.java扩展listview ,无法扩展appcompatibility类。 我正在尝试在Internet上找到解决方
1回复

在导航抽屉片段之间切换后,无法在片段内添加ListView项目

编辑:我的滑动标签片段ATabs似乎有问题。 无需使用ATabs片段,而仅使用导航抽屉在片段A1和B之间切换,一切正常! 可以添加ListItems。 编辑的MainActivity: 但是,一旦我使用了ATabs片段(请参见下面的MainActivity)并将其切换回去, 就无法
1回复

Android ActionBar或工具栏

我已经阅读/了解了很多有关如何启动下一个应用程序的内容,发现建议在Android Studio中作为启动活动使用的活动可能包含已弃用的元素,例如ActionBar,而我宁愿从头开始而没有活动,并使用新棒棒糖引入的“工具栏”。 我的问题是:由于我需要在应用程序中使用某种顶部栏(ActionB
1回复

Android:将图标添加到DrawerLayout

首次创建应用程序时,您可以选择导航类型,然后选择“动作栏活动”。 这是NavigationDrawerFragment片段 这是fragment_navigation_drawer.xml 如何为项目添加图标?...我完全迷路了。
1回复

Android:使用ActionBarActivity将图标添加到Listview

我使用了在首次设置应用程序时可以选择的导航抽屉。 首次创建应用程序时,您可以选择导航类型,然后选择Actiobar活动。 这将使用片段和如下所示的listview xml文件。 这是NavigationDrawerFragment 主要活动 这是mainactiv
2回复

在单个活动中添加动作栏和列表视图的任何方法?

当我打开活动时,导航抽屉不会显示。 那么,有什么方法可以在一个活动中一起添加listview和actionbar? 如果有人可以帮助我,将不胜感激。 谢谢
3回复

如何在导航栏抽屉中更改列表中选定的项目颜色?

我从Android Studio导航浏览器的例子开始。 我正在定制我想要的一切,一切都很好,但我找不到如何在导航抽屉中更改所选的项目颜色...现在它是绿色的,我无法改变它。 我尝试使用选择器drawable,但没办法,我设法改变了整个背景,但没有选择一个。 很抱歉,如果这是一个菜鸟
8回复

更改操作栏android上的导航抽屉图标

我使用ActionBar在我的应用程序中创建了一个NavigationDrawer。 如上图所示,我想将NavigationDrawer切换按钮图标更改为我想要的内容。 我该怎么改变它? 这是我的代码: - 如果我尝试将其更改为R.drawable.hamburger_b
4回复

在android中的操作栏上设置导航抽屉

我已经创建了一个导航抽屉。我想在状态栏下面显示抽屉。它可以正常工作。但抽屉在版本5及以上的状态栏上方打开。我想将抽屉设置为类似于第二个图像。如何在所有版本的状态栏下方的动作(即)上设置导航抽屉 `
1回复

导航抽屉片段内的Android操作栏标签

我有带碎片的导航抽屉。 是否有任何可能的方法在片段中实现操作栏选项卡,同时具有导航抽屉,就像在Google I / O 2014应用程序中一样?: http://cdn.slashgear.com/wp-content/uploads/2014/06/google-io-2014-app