我遇到列表视图的问题,即使行数很多,也只会一次显示一行。 列表视图包含在选项卡中,因此可能存在问题而不是列表视图中的问题。 我首先尝试在单独的布局文件中定义列表视图,并在创建选项卡时使用它。当这不起作用时,我将它放入带有选项卡定义的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;
}
数据就在那里。它只是列表视图的高度等于一行的高度。
修改:
我添加了一些调试命令来查看getView请求的位置。它只请求第一行,然后在滚动时一次请求一行。 因此,它肯定会将其视为一个小型列表视图并相应地滚动它们。
编辑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));
还是一样。一次只有一行。
答案 0 :(得分: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"
答案 1 :(得分:0)
你定义布局的高度而不是使用fill_parent ......
代码:
layout_height ="150dp"
答案 2 :(得分: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);
您是否以这种方式添加标签'因为您动态添加标签?