3

多くの行があるにもかかわらず、一度に 1 行しか表示されないリスト ビューに問題があります。リスト ビューはタブ内に含まれているため、問題はリスト ビューではなくタブ内にある可能性があります。最初に、別のレイアウト ファイルでリスト ビューを定義し、それを使用してタブを作成しようとしました。それがうまくいかなかったとき、私はそれをタブ定義で FrameLayout に入れました。同じ結果です。

<?xml version="1.0" encoding="utf-8"?>
<TabHost android:layout_width="fill_parent"
    android:layout_height="fill_parent" xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@android:id/tabhost">
    <LinearLayout android:id="@+id/LinearLayout01"
        android:orientation="vertical" android:layout_height="fill_parent"
        android:layout_width="fill_parent">
        <TabWidget android:id="@android:id/tabs"
            android:layout_height="fill_parent" android:layout_width="wrap_content"></TabWidget>
        <FrameLayout android:id="@android:id/tabcontent"
            android:layout_height="fill_parent" android:layout_width="fill_parent">
            <ListView android:id="@+id/list1" android:layout_width="fill_parent"
                android:layout_height="fill_parent"> 
            </ListView></FrameLayout>
    </LinearLayout>
</TabHost>

これは、タブを作成して追加するために使用するコードです。

protected void addTab(String tabName, TabHost.TabContentFactory tabFactory){
    TabSpec tabSpec = tabHost.newTabSpec(tabName);
    tabSpec.setIndicator(tabName);
    tabSpec.setContent(tabFactory);
    tabHost.addTab(tabSpec);
    tabs.add(new TabDetails(tabName,tabFactory));

}

私はそれを次のように呼び出します:

addTab("Medical Center Tests",this);

タブのコンテンツを作成するための次のコードを含めます。

@Override
public View createTabContent(String tag) {


    // Get the data returned from the servelet and display it in the ListView
    data = getDataArray(this.getIntent().getExtras());




    ListView lv = (ListView) contentView.findViewById(R.id.list1);

lv.setAdapter(new MyMedicalCentersTestsScreenAdapter(this,lv,data));
return lv;
}

データはすべてそこにあります。リストビューの高さが1行の高さに等しいだけです。

編集

getView が要求する位置を確認するために、いくつかのデバッグ コマンドを追加しました。最初の行のみを要求し、スクロールすると一度に 1 つずつ要求します。したがって、それは間違いなく小さなリストビューと見なされ、それに応じてスクロールされます。

編集2

実験してみることにしました。リスト ビューの単純なリストを返しました。

    ListView lv = (ListView) contentView.findViewById(R.id.list1);
    // create some dummy strings to add to the list
    List<String> list1Strings = new ArrayList<String>();
    list1Strings.add("Item 1");
    list1Strings.add("Item 2");
    list1Strings.add("Item 3");
    list1Strings.add("Item 4");
    lv.setAdapter(new ArrayAdapter(this, android.R.layout.simple_list_item_1, list1Strings));

まだ同じ。一度に 1 行のみ。

4

3 に答える 3

0

これをやってみてください

<TabWidget android:id="@android:id/tabs" android:layout_height="fill_parent" android:layout_width="fill_parent"></TabWidget>

それ以外の

<TabWidget android:id="@android:id/tabs" android:layout_height="fill_parent" android:layout_width="wrap_content"></TabWidget>

android:layout_height="wrap_content"またandroid:layout_height="100dp"

これの代わりに

android:layout_height="fill_parent"

于 2012-07-15T13:18:18.210 に答える
0

tabWidget (親のタブ コレクション内の各ページを表すタブ ラベルのリストが表示されます) の高さが に設定されているため、レイアウトは少し奇妙fill_parentです。このようなものはどうですか?

<?xml version="1.0" encoding="utf-8"?>
<TabHost android:layout_width="fill_parent"
         android:layout_height="fill_parent" xmlns:android="http://schemas.android.com/apk/res/android"
         android:id="@android:id/tabhost">
<LinearLayout
         android:id="@+id/LinearLayout01"
         android:layout_width="fill_parent"
         android:layout_height="fill_parent"
         android:orientation="vertical" >
<TabWidget
    android:id="@android:id/tabs"
    android:layout_width="match_parent"
    android:layout_height="84dp" >

</TabWidget>

<FrameLayout
    android:id="@android:id/tabcontent"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content" >

    <LinearLayout
        android:id="@+id/tab1"
        android:layout_width="match_parent"
        android:layout_height="fill_parent">


        <ListView
            android:id="@+id/list1"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content" >

        </ListView>

    </LinearLayout>

    <LinearLayout
        android:id="@+id/tab2"
        android:layout_width="match_parent"
        android:layout_height="fill_parent" >

    </LinearLayout>

  </FrameLayout>

</LinearLayout>
</TabHost>

タブの場合:

    tabhost = (TabHost) findViewById(android.R.id.tabhost);
    tabhost.setup();

    TabSpec ts = tabhost.newTabSpec("tag1"); 
    ts.setContent(R.id.tab1);
    ts.setIndicator("TAB1");
    tabhost.addTab(ts);

    ts = tabhost.newTabSpec("tag2"); 
    ts.setContent(R.id.tab2);
    ts.setIndicator("TAB2");  
    tabhost.addTab(ts);

タブを動的に追加するので、その方法でタブを追加しますか?

于 2012-07-15T14:56:59.907 に答える
0

fill_parent を使用するのではなく、レイアウトの高さを定義します...

コード:

 layout_height ="150dp"
于 2012-07-15T13:19:27.960 に答える