我试图将listView包含在导航抽屉中,但是当我启动应用程序时,listView不会出现在抽屉中,但在主界面中我无法找到问题请帮助我!
Java代码:
package com.example.anb_calculator;
import java.util.ArrayList;
import java.util.List;
import android.app.Fragment;
import android.app.FragmentManager;
import android.os.Bundle;
import android.support.v4.app.ActionBarDrawerToggle;
import android.support.v4.widget.DrawerLayout;
import android.support.v7.app.ActionBarActivity;
import android.view.Gravity;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
public class HomeFinanceActivity extends ActionBarActivity {
private DrawerLayout drawerLayout;
private ActionBarDrawerToggle drawerToggle;
ListView liste = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_home_finance);
// l'ajout du navigation drawer
drawerLayout = (DrawerLayout) findViewById(R.id.drawerLayout);
drawerToggle = new ActionBarDrawerToggle(this, drawerLayout, R.drawable.ic_drawer, R.string.drawer_open, R.string.drawer_close);
drawerLayout.setDrawerListener(drawerToggle);
drawerToggle.setDrawerIndicatorEnabled(true);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setHomeButtonEnabled(true);
drawerToggle.syncState();
//*************************/
String[] values = new String[] { "Overview","Car Finance","Home Finance","Personal Finance"};
liste = (ListView) findViewById(R.id.listView);
List<String> exemple = new ArrayList<String>();
exemple.add("Overview");
exemple.add("Home Finance");
exemple.add("Car Finance");
exemple.add("Personal Finance");
exemple.add("Credit Cards");
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, exemple);
liste.setAdapter(adapter);
//liste.setOnItemClickListener(new DrawerItemClickListener());
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.home_finance, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(final MenuItem item) {
if(android.R.id.home == item.getItemId()) {
if (drawerLayout.isDrawerOpen(Gravity.LEFT) == false) {
drawerLayout.openDrawer(Gravity.LEFT);
}
else {
drawerLayout.closeDrawers();
}
}
return super.onOptionsItemSelected(item);
}
}
XML代码:
<android.support.v4.widget.DrawerLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/drawerLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@android:color/white"
>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.example.anb_calculator.HomeFinanceActivity"
android:background="@drawable/planplan">
<TextView
android:id="@+id/home_finance"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/home_finance"
android:paddingBottom="@dimen/small_padding"
android:gravity="center"
android:textColor="@color/black"
android:textStyle="bold"
android:textSize="@dimen/large_size"
/>
</RelativeLayout>
<FrameLayout
android:id="@+id/frame_container"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<TextView
android:layout_width="240dp"
android:layout_height="match_parent"
android:layout_gravity="left"
android:text="This is a navigation drawer"
android:background="@color/black"
android:textColor="@color/blue"
/>
<ListView
android:id="@+id/listView"
android:layout_height="match_parent"
android:layout_width="match_parent"
>
</ListView>
</android.support.v4.widget.DrawerLayout>
答案 0 :(得分:0)
DrawerLayout
的{{3}}包含问题的解决方案:
要使用DrawerLayout,请将主要内容视图定位为第一个 宽度和高度为match_parent的子节点。添加抽屉作为孩子 主要内容视图后的视图并设置layout_gravity 适当。抽屉通常使用match_parent作为高度 固定宽度。
因此,除第一个之外的View
的任何子DrawerLayout
都被解释为抽屉。 layout_gravity
确定drawer
的位置以及从哪个方向滑动。
所以你的问题是:
DrawerLayout
中有两个以上的孩子(不知道你是否想要那个,会创建多个抽屉)。layout_gravity
。要修复它,你只需要修复你的布局!尝试这样的事情:
<?xml version="1.0" encoding="utf-8"?>
<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">
<!-- The main content view -->
<RelativeLayout
android:id="@+id/rlFragmentContainer"
android:layout_width="match_parent"
android:layout_height="match_parent">
<!-- Content goes here!!!!!!1 -->
</RelativeLayout>
<!-- The navigation drawer -->
<ListView android:id="@+id/lvDrawer"
android:layout_width="240dp"
android:layout_height="match_parent"
android:layout_gravity="start"/>
</android.support.v4.widget.DrawerLayout>
此处唯一非常重要的部分是layout_gravity
的{{1}}设置为ListView
。这意味着您可以从左侧start
滑动。
答案 1 :(得分:-1)
您必须将ListView放入DrawerLayout:
drawerLayout.addView(liste);
说它是否有效:)