2012-09-18 141 views
0

我有一個列表視圖,我已經做了,而沒有足夠的項目來填滿整個屏幕。我已經設置了我的背景顏色以外的默認值,所以當然我的列表視圖看起來非常糟糕。有沒有辦法填補屏幕的其餘部分?ListView不填滿屏幕

settings_list.xml

<?xml version="1.0" encoding="utf-8"?> 

<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:background="@color/gray_bkg" 
> 
    <TextView xmlns:android="http://schemas.android.com/apk/res/android" 
     android:id="@+id/selection" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:textAppearance="?android:attr/textAppearanceLarge" 
     android:background="@color/gray_bkg" 
    /> 

    <ListView 
     android:id="@android:id/list" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:drawSelectorOnTop="false" 
     android:background="@color/gray_bkg" 
    /> 
</LinearLayout> 

SettingsActivity.java

package shc_BalloonSat.namespace; 

import android.app.ListActivity; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.ArrayAdapter; 
import android.widget.ListView; 

public class SettingsActivity extends ListActivity 
{ 
    private ArrayAdapter<String> adapter; 

    private String[] list = {"Get Last 5 Packets", "Get Last 10 Packets", "Get Last 20 Packets", 
      "Change View"}; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 
     adapter = new ArrayAdapter<String>(this, R.layout.settings_list, R.id.selection , list); 

     setListAdapter(adapter); 
    } 

    @Override 
    protected void onListItemClick(ListView l, View v, int position, long id) 
    { 
     super.onListItemClick(l, v, position, id); 
    } 
} 

而且爲什麼我需要的ListView控件當適配器只希望我傳遞給它的TextView的id ?

更新:

我更新了我上面的XML代碼。即使我將背景顏色添加到LinearLayout,我的listview下面的背景仍然是默認的黑色。

+2

如果您使用全屏幕背景色,最簡單的方法就是將背景顏色設置移動到最外面的LinearLayout。 – harism

+1

「還有,爲什麼我需要listview widget,當適配器只要我傳遞它的TextView的ID?」如果您刪除ListView,適配器將在何處顯示其TextViews? ListView是強制性的,它提供了順序和功能(如'onListItemClick()'方法)。 – Sam

+0

@harism好的,我會試試看。 – tylerbhughes

回答

0

我已經設置我的背景顏色比默認

其他的東西應用樣式特徵,如顏色,最好的辦法是Themes。一個主題可以使用幾行代碼在一個地方設置背景顏色。

我更新了我上面的XML代碼。即使我將背景顏色添加到LinearLayout,我的listview下面的背景仍然是默認的黑色。

ListView行不會從ListView元素接收特徵,如背景。該行收到他們的特點從這裏定義的行佈局:

adapter = new ArrayAdapter<String>(this, R.layout.settings_list, R.id.selection , list); 

settings_list.xml背景需要透明或設置爲相同的顏色作爲一切。


從評論排名上升:

「還有爲什麼我需要的ListView控件當適配器只希望我傳遞給它的TextView的id?」

如果您刪除ListView,適配器將在何處顯示其TextViews? ListView是強制性的,它提供了命令和功能(如onListItemClick()方法)。

但是它仍然如何知道它在那裏時,我沒有將它傳遞給適配器?

您正在使用ListActivity。 ListActivity的一個要求是在佈局中使用ID爲android:id/list的ListView。該ListActivity將自動使用該ListView控件,設置許多功能對你,理解你傳遞一個ArrayAdapter你的ListView,當你撥打:

setListAdapter(adapter); 

希望幫助!