0

我想要一个英文字母的列表视图,我希望这个列表视图保持固定并一直显示,我的意思是我不想让用户滚动它,因为他会看到这一切。我应该怎么做才能使其始终显示并适合所有移动设备的所有屏幕尺寸?我试过这样:

列表显示

<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 也不是一个好方法。

请有任何帮助

4

2 回答 2

2

设置项目高度是一个非常糟糕的主意。如果您想获得相对于屏幕尺寸的高度,您应该使用垂直线性布局,将项目高度设置为零并在其上添加权重。要禁用滚动尝试添加 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

于 2013-02-06T09:43:36.927 回答
1

要获得屏幕的高度,请执行以下操作:

  listView.getViewTreeObserver().addOnGlobalLayoutListener(new OnGlobalLayoutListener() {

    public void onGlobalLayout() {
      item.setMinimumHeight(listView.getHeight() / 26);
    }
  });

对于不允许滚动尝试:

listView.setScrollContainer(false)
于 2013-02-06T09:48:53.303 回答