我在Android应用(API 8)中实现了一个列表视图。但是,该列表仅包含三个元素,因此,屏幕的一半以上是空的。我想扩展listview以覆盖手机的整个屏幕。有什么方法可以做同样的事情?
这是我的布局XML文件:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:background="@color/white"
android:shape="rectangle"
android:paddingTop="5dp"
android:paddingBottom="0dp"
>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:weightSum="100"
>
<ImageView
android:layout_weight="40"
android:id="@+id/test_image"
android:layout_width="158dp"
android:layout_height="52dp"
android:contentDescription="@string/footer"
android:src="@drawable/logo1" />
<Spinner
android:id="@+id/spinner1"
android:layout_width="127dp"
android:layout_height="wrap_content"
android:layout_gravity="right"
android:layout_weight="60"
android:prompt="@string/city_prompt"
/>
</LinearLayout>
<LinearLayout android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
>
<ListView
android:id="@android:id/list"
android:layout_weight="1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="#000000"
android:drawSelectorOnTop="true"
android:layout_gravity="center"
android:dividerHeight="2dp"
/>
</LinearLayout>
</LinearLayout>
请注意,我希望列表项目覆盖整个屏幕,只有三个项目。
答案 0 :(得分:2)
ListView不会自动填充所有空间。如果你想实现这一点,因为在这里,ListView占用了整个空间,而不是它的项目。如果你仍然想要更大的行,如果是较小的项目,那么使用getCount()方法在getView方法中提供列表项的高度。
例如,您希望在列表中的屏幕上一次显示最多六个项目。然后像这样实现ListView:
获取屏幕的宽度和高度,使用以下代码加入onCreate方法:
Display display = getWindowManager().getDefaultDisplay();
Point size = new Point();
display.getSize(size);
int width = size.x;
int height = size.y;
现在在getView中,执行以下操作:
int itemHeight = 0;
if (getCount() >= 6)
itemHeight = height/6;
else
itemHeight = height/getCount();
LinearLayout llView=new LinearLayout(YourActivityName.this);
//Or inflate through XML
llView.setLayoutParams(new LayoutParams(LayoutParams.Fill_Parent, itemHeight));
//Do other functionality
答案 1 :(得分:2)
我刚刚复制了你的XML,粘贴并尝试过,它运行正常。还有一件事要说明你不应该使用layout_height="wrap_content"
。相反,您可以将android:layout_height="0dip"
设置为已使用android:layout_weight="1"
,这将使ListView填充LinearLayout的剩余区域。
答案 2 :(得分:1)
首先改变:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
android:background="@color/white"
android:shape="rectangle"
android:paddingTop="5dp"
android:paddingBottom="0dp"
>
然后第二,机会:
<ListView
android:id="@android:id/list"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#000000"
android:drawSelectorOnTop="true"
android:layout_gravity="center"
android:dividerHeight="2dp"
/>