【问题标题】:how to include items in navigation drawer如何在导航抽屉中包含项目
【发布时间】:2014-11-04 09:30:38
【问题描述】:

这里是 MainActivity.java

public class MainActivity extends ActionBarActivity {

// inisiasi toolbar
private Toolbar toolbar;

// navigation drawer
private DrawerLayout drawerLayout;
private ActionBarDrawerToggle drawerToggle;

String title = "My App";


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

    toolbar = (Toolbar) findViewById(R.id.toolbar);
    drawerLayout = (DrawerLayout) findViewById(R.id.drawerLayout);

    if (toolbar != null) {
        toolbar.setTitle(title);
        setSupportActionBar(toolbar);
    }



    initDrawer();
}

/**
 * init navigation drawer thing
 */
private void initDrawer() {
    //setup navigation drawer
    drawerToggle = new ActionBarDrawerToggle(this, drawerLayout, toolbar, R.string.txt_open, R.string.txt_close) {
        @Override
        public void onDrawerClosed(View drawerView) {
            super.onDrawerClosed(drawerView);
            // when drawer closed
            toolbar.setTitle(title);
        }

        @Override
        public void onDrawerOpened(View drawerView) {
            super.onDrawerOpened(drawerView);
            // when drawer open
            toolbar.setTitle("Nav menu");
        }
    };

    // setDrawerlisterner
    drawerLayout.setDrawerListener(drawerToggle);
}

@Override
protected void onPostCreate(Bundle savedInstanceState) {
    super.onPostCreate(savedInstanceState);
    drawerToggle.syncState();
}

@Override
public void onConfigurationChanged(Configuration newConfig) {
    super.onConfigurationChanged(newConfig);
    drawerToggle.onConfigurationChanged(newConfig);
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.menu_main, menu);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    int id = item.getItemId();

    //noinspection SimplifiableIfStatement
    if (id == R.id.action_settings) {
        return true;
    }
    if (drawerToggle.onOptionsItemSelected(item))
        return true;
    return super.onOptionsItemSelected(item);
}

}

这里是xml文件布局视图

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:orientation="vertical"
android:layout_height="match_parent"
tools:context=".MainActivity">

<!-- Toolbar -->

<include layout="@layout/toolbar" />

<!-- content -->
<android.support.v4.widget.DrawerLayout
    android:layout_width="match_parent"
    android:id="@+id/drawerLayout"
    android:layout_height="match_parent">

    <RelativeLayout
        android:layout_width="match_parent"
        android:background="#fff"
        android:layout_height="match_parent">

        <TextView
            android:layout_centerInParent="true"
            android:layout_width="wrap_content"
            android:textColor="#000"
            android:text="Our Content"
            android:layout_height="wrap_content" />
    </RelativeLayout>
    <!-- nav drawer -->
    <LinearLayout
        android:layout_gravity="start"
        android:orientation="vertical"
        android:background="#fff"
        android:layout_width="280dp"
        android:layout_height="match_parent">
        <TextView
            android:layout_width="wrap_content"
            android:textColor="#000"
            android:text="Nav drawer"
            android:layout_height="wrap_content" />
    </LinearLayout>

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

有谁知道如何将列表视图添加到导航抽屉。当用户将导航抽屉上的每个项目选择到一个片段中时,我想加载一个网页。我尝试从示例中实现代码,但出现了很多错误。

【问题讨论】:

  • 将列表视图添加到您的线性布局。然后在活动类中定义该列表视图。使用适配器。将 onItemClickListener 设置为列表视图。如果您想要更多详细信息,请在主要活动类中发布您的确切要求
  • 我已经发布了我的 MainActivity 类文件。告诉我如何在点击每个列表视图项时查看网页..

标签: java android drawer


【解决方案1】:

好吧,NavigationDrawer 没什么好怕的。起初我们可能会认为这是某种特殊的活动,这和那个。但它非常简单。

第 1 步 - 创建具有 2 个布局的 xml 文件

<FrameLayout>

     //main screen contents

</FrameLayout>

<Linear/Relative/ListView/xyz>

      // any layout that u want to be shown in navigation drawer

</Linear/Relative/ListView/xyz>

第 2 步 - 用几个代码在活动类中定义你的抽屉

drawerLayout = (DrawerLayout) findViewById(R.id.NvDrawer);
drawerToggle = new ActionBarDrawerToggle(this, drawerLayout,
            R.drawable.ic_drawer, R.string.drawer_open, R.string.drawer_close);

drawerLayout.setDrawerListener(drawerToggle);

并覆盖此方法

    @Override
public void onDrawerSlide(View view, float v) {

}


@Override
public void onDrawerOpened(View view) {

}

@Override
public void onDrawerClosed(View view) {

}

@Override
public void onDrawerStateChanged(int i) {

}

@Override
protected void onPostCreate(Bundle savedInstanceState) {
    super.onPostCreate(savedInstanceState);
    drawerToggle.syncState();
}

第 3 步 - 在 onOptionsItemSelected 中添加此代码

if (drawerToggle.onOptionsItemSelected(item)) {
        return true;

【讨论】:

  • 好吧..那么你还没有提到关于onclick每个listview项目显示一个网页..
  • 这也像往常一样。 listview.setOnItemClickListener 并做任何你想做的点击。
  • 你遇到错误还是什么?请发布该代码。因为它在我的情况下有效
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多