我想要一个英文字母的列表视图,我希望这个列表视图能够保持固定并一直显示,我的意思是我不想让用户滚动它,因为他会看到它。我该怎么做才能让它始终显示并适合所有移动设备的所有屏幕尺寸?我试过这样:
的ListView
<ListView
android:divider="#000000"
android:id="@+id/lv_profile_listview_with_search_alphabets"
android:layout_width="0dip"
android:layout_height="fill_parent"
android:layout_weight="0.1"
>
</ListView>
列出项目
<TextView
android:id="@+id/tv_list_item_alphabet_oneAlphabet"
android:layout_width="fill_parent"
android:layout_height="0dip"
android:layout_gravity="center_horizontal"
android:background="@drawable/alphabet_selector"
android:gravity="center_horizontal"
android:textColor="#040404"
android:textSize="10dip"
android:typeface="sans"
/>
但是在我的设备上,我仍然在屏幕按钮上有空白区域。
我猜的解决方案之一,我在我的适配器上以编程方式设置每个列表项的高度,如
li.setHeight(ScreenHeight/26);
但我不知道如何获得ScreenHeight,这不是一个好方法。
任何帮助,请
答案 0 :(得分:2)
设置项目高度是一个非常糟糕的主意。如果您想要相对于屏幕尺寸的高度,则应使用垂直 LinearLayout,将项目高度设置为零并在其上添加权重。 要禁用滚动,请尝试添加android:clickable =“false”属性。
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:weightSum="1" >
<ListView
android:divider="#000000"
android:id="@+id/lv_profile_listview_with_search_alphabets"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="0.3"
android:clickable="false"/>
</LinearLayout>
如果垂直布局的重量总和为1且您的重量为0.3,则意味着它比屏幕高度的1/3小一点。 您可以通过权重和方向在LinearLayout中设置相对宽度或高度。 例如,要使ListView的宽度为0.5宽度的屏幕并将高度设置为match_parent,它将是这样的。请注意,如果item为0dp,LinearLayout现在是水平,宽度
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
android:weightSum="1" >
<ListView
android:divider="#000000"
android:id="@+id/lv_profile_listview_with_search_alphabets"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="0.5"
android:clickable="false"/>
</LinearLayout>
根据代码中的屏幕大小设置项目高度是一种不好的做法。您可以制作自定义项目布局并从尺寸设置项目的layout_height,并为不同的分辨率添加不同的尺寸
http://developer.android.com/guide/topics/resources/more-resources.html#Dimension
http://developer.android.com/guide/topics/resources/providing-resources.html
这些文章可能对您有所帮助
http://developer.android.com/guide/practices/screens_support.html
http://developer.android.com/training/multiscreen/index.html
答案 1 :(得分:1)
要获得屏幕的高度,请执行以下操作:
listView.getViewTreeObserver().addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
public void onGlobalLayout() {
item.setMinimumHeight(listView.getHeight() / 26);
}
});
不允许滚动试试:
listView.setScrollContainer(false)