有没有办法为列表视图设置可查看项目数?或者我是否有义务为列表视图设置高度?
例如,我有一个包含9个项目的列表。我只希望其中有4个首先出现。然后用户需要滚动才能看到其他项目。
list_anlam.xml
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_margin="1dp"
android:background="@android:color/darker_gray" >
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/title_popup_hikayeoku" />
<EditText android:id="@+id/kelime_text"
android:inputType="text"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
<ListView android:id="@+id/list_anlam"
android:layout_width="match_parent"
android:layout_height="wrap_content"></ListView>
<Button
android:id="@+id/button_sec"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/button_popup_hikayeoku" />
</LinearLayout>
list_item.xml:
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:textSize="20sp"
android:padding="10dp" />
我将项目填入listview:HikayeOkuActivity.java是
String[] anlamlar = null;
anlamlar = MainActivity.dbM.ilkAnlamGetir(selectedText);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.list_item,anlamlar);
anlamList.setAdapter(adapter);
popupWindow.showAsDropDown(mainLayout, touchedX,touchedY);
答案 0 :(得分:0)
基本上,每个视图的高度必须是ListView高度的1/4。如果要支持所有设备分辨率,则必须进行计算。如果您需要更多相关信息,请添加评论,我会详细解释。
重要的是,您使用哪种适配器进行ListView?
答案 1 :(得分:0)
如果我错了,请纠正我,但是......
您还可以在xml布局中使用 android:WEIGHTSUM 和 android:WEIGHT 参数。为父视图(您的ListView)设置android:weightsum = 1,为子视图设置android:weigth = 0.25(ListView项目的布局)。在这种情况下,您无需计算可视对象的高度。
答案 2 :(得分:0)
是的,你需要获得listview的高度。在你的onCreate中你会做类似的事情:
listview.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
height = listView.getHeight();
}
在适配器的getView
方法中,然后使用height
除以4来设置每个列表项的高度。
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater inflater = activity.getLayoutInflater();
View rowView = inflater.inflate(R.layout.item_layout, parent, false);
rowView.setMinHeight(height/4);
return rowView;
}
现在最好使用ViewHolder完成,但这不是主题。