android - Listview not filling its parent -
i have faced following problem:
i'm trying implement navigation drawer subheadings 1 in gmail app , 1 app:
as can see, have higlighted there no dividers @ end of each list
so have taken implementation subheadings stack overlfow , have ended this:
know, navigation drawer uses listview , reason why divider there because subheading list item setting option footerdividerenabled false doesn't solve problem.
so next implementaiton put view contatin subheading , listview , added navigation-drawer's listview.
here source code of mainactivity:
package com.myphun.radio; import java.util.arraylist; import java.util.list; import android.content.context; import android.os.bundle; import android.support.v7.app.actionbar; import android.support.v7.app.actionbaractivity; import android.view.view; import android.view.viewgroup; import android.widget.abslistview; import android.widget.arrayadapter; import android.widget.linearlayout; import android.widget.listview; import com.example.androidradio.r; import com.myphun.ui.adapters.listviewadapter; import com.myphun.ui.components.slidingmenulayout; public class mainactivity extends actionbaractivity { private slidingmenulayout mslidingmenulayout; private listview leftdrawerlist; private listviewadapter madapter; @override public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_main); mslidingmenulayout = (slidingmenulayout) findviewbyid(r.id.main_sliding_menu); leftdrawerlist = (listview) findviewbyid(r.id.left_drawer_list); viewarrayadapter viewarrayadapter = new viewarrayadapter(this); view generic_drawer_view = view.inflate(this, r.layout.sliding_menu_general_section_layout, null); viewarrayadapter.add(generic_drawer_view); listview genericcategorieslistview = (listview) generic_drawer_view.findviewbyid(r.id.general_drawer_list); madapter = new listviewadapter(this); madapter.additem("mercury", r.drawable.mercury); madapter.additem("venus", r.drawable.venus); madapter.additem("earth", r.drawable.earth); madapter.additem("mars", r.drawable.mars); madapter.additem("neptune", r.drawable.neptune); madapter.additem("saturn", r.drawable.saturn); madapter.additem("uranus", r.drawable.uranus); madapter.additem("jupiter", r.drawable.jupiter); genericcategorieslistview.setadapter(madapter); leftdrawerlist.setadapter(viewarrayadapter); } } class viewarrayadapter extends arrayadapter<view> { public viewarrayadapter(context context) { super(context, 0, new arraylist<view>()); } public viewarrayadapter(context context, list<view> viewslist) { super(context, 0, viewslist); } @override public view getview(int position, view convertview, viewgroup parent) { return getitem(position); } }
main activity xml:
<com.myphun.ui.components.slidingmenulayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/main_sliding_menu" android:layout_width="match_parent" android:layout_height="match_parent" > <!-- main content view --> <framelayout android:id="@+id/content_frame" android:layout_width="match_parent" android:layout_height="match_parent" > <textview android:id="@+id/textview122" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="large text" android:textappearance="?android:attr/textappearancelarge" /> </framelayout> <!-- navigation drawer --> <listview android:id="@+id/left_drawer_list" android:layout_width="275dp" android:layout_height="match_parent" android:layout_gravity="start" android:background="#444444" android:choicemode="singlechoice" android:divider="#555555" android:dividerheight="0dp" android:footerdividersenabled="false" android:headerdividersenabled="false" /> </com.myphun.ui.components.slidingmenulayout>
custom view:
<?xml version="1.0" encoding="utf-8"?> <linearlayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/general_drawer_view" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <textview android:id="@+id/general_drawer_header" android:layout_width="match_parent" android:layout_height="62dp" android:background="@drawable/list_selector" android:gravity="bottom" android:paddingbottom="5dp" android:paddingright="16dp" android:text="planets" android:textcolor="#ffffff" android:textsize="25sp" /> <view android:layout_width="fill_parent" android:layout_height="1dp" android:background="#ffffff" /> <listview android:id="@+id/general_drawer_list" android:layout_width="match_parent" android:layout_height="match_parent" android:background="#ee444444" android:choicemode="singlechoice" android:divider="#555555" android:dividerheight="1dp" android:footerdividersenabled="false" android:headerdividersenabled="false" /> </linearlayout>
but reason, listview doesn't fill entire screen:
i've tried many combination of xml_atributes (i.e. match_parent, wrap_content, fill_parent) , 1 works when set listview layout_height manually (i.e. layout_height ="625dp").
so question is: i'am doing wrong ? how can achieve desire result ? why listview not expanding ?
first of think committing overkill adding listview
listview
. pretty defats purpose of using listview
reusable views in first place , makes layout pretty complexed have provide many adapters , many xml-layout files.
let's 1 thing straight - navigationdrawer
can contain view not listview
.
if data not fit in one-listview concept maybe should not use @ ? stick linearlayouts
. if have dynamic data add addview
method sub-linearlayout (sections). if have static navigation declare directly in layout xml file - gain opportunity preview layout without compiling whole project.
if want put lot of items navigationdrawer maybe should rethink whole concept of app? navigation become content hence should not in navigationdrawer
.
hope helps, regs.
Comments
Post a Comment