0

作成したリストビューがありますが、画面全体を埋めるのに十分なアイテムがありません。背景色をデフォルト以外の色に設定したので、もちろんリストビューの見栄えが非常に悪くなります。画面の残りの部分を埋める方法はありますか?

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>

設定Activity.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);
    }
}

また、アダプタが textview の ID のみを渡してほしいのに、なぜ listview ウィジェットが必要なのですか?

アップデート:

上記の XML コードを更新しました。LinearLayout に背景色を追加しても、リストビューの下の背景はデフォルトの黒のままです。

4

1 に答える 1

0

背景色をデフォルト以外に設定しました

色などのスタイル特性を適用する最良の方法は、テーマを使用することです。テーマは、数行のコードを使用して、すべての背景色を 1 か所で設定できます。

上記の XML コードを更新しました。背景色を LinearLayout に追加しても、リストビューの下の背景はデフォルトの黒のままです。

ListView 行は、ListView 要素から背景などの特性を受け取りません。行は、ここで定義された行レイアウトから特性を受け取ります。

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

の背景はsettings_list.xml透明にするか、他のすべてと同じ色に設定する必要があります。


コメントから上に移動:

「また、アダプターがテキストビューの ID のみを渡してほしいのに、なぜリストビュー ウィジェットが必要なのですか?」

ListView を削除すると、アダプタは TextView をどこに表示しますか? ListView は必須であり、順序と機能を提供します (onListItemClick() メソッドのように)。

しかし、アダプターに渡していないときに、それがそこにあることをどうやって知るのでしょうか?

ListActivity を使用しています。ListActivity の要件の 1 つは、レイアウトに id の ListView を含めることですandroid:id/list。ListActivity は自動的にこの ListView を使用して多くの機能を設定し、次の呼び出し時に ArrayAdapter を ListView に渡していることを理解します。

setListAdapter(adapter);

それが役立つことを願っています!

于 2012-09-19T16:56:48.497 に答える