android listview显示在非常大的高度

时间:2014-03-13 12:24:23

标签: android listview textview height

我正在创建仅包含textview的自定义列表视图。
(我不喜欢设置custom_textview.xml的根LinearLayout的高度意味着修复高度)          

    <ListView
        android:id="@+id/listView1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"

        android:layout_marginTop="5dp"
        android:divider="@drawable/divider"
        android:dividerHeight="2dip"
        android:listSelector="@drawable/my_list_selector" >
    </ListView>

    <!-- <ListView -->
    <!-- android:id="@+id/lv_diseases" -->
    <!-- android:layout_width="match_parent" -->
    <!-- android:layout_height="match_parent" -->
    <!-- android:layout_alignParentLeft="true" -->
    <!-- android:layout_marginTop="5dp" -->
    <!-- android:layout_below="@+id/imageView1" > -->


    <!-- </ListView> -->

    <TextView
        android:id="@+id/emptyText"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        android:layout_marginTop="232dp"
        android:gravity="center"
        android:text="Empty List"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:visibility="gone" />

</RelativeLayout>

这是listview_Adpter中的getview方法 @

Override
    public View getView(int position, View convertView, ViewGroup parent) {
        ViewHolder view;
        LayoutInflater inflator = activity.getLayoutInflater();

        if (convertView == null) {
            view = new ViewHolder();

            convertView = inflator.inflate(R.layout.custom_textview, null);

            view.txtViewTitle = (TextView) convertView
                    .findViewById(R.id.list_content);

            view.txtViewTitle.setTextColor(Color.WHITE);

            view.txtViewTitle.setTypeface(Typeface.createFromAsset(parent
                    .getContext().getAssets(), "fonts/DroidSerif.ttf"));

            convertView.setTag(view);

        }

        else {
            view = (ViewHolder) convertView.getTag();
        }
        System.gc();
        try {
            view.txtViewTitle.setText(listCountry.get(position));

        } catch (Exception e) {
            System.out.println("this is error " + e.getMessage());
        }

        return convertView;
    }

这是我的textview里面的custom_textview.xml是

 <?xml version="1.0" encoding="utf-8"?>
    <!-- Definig a container for you List Item-->
    <LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:gravity="center_vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">
    <!-- Defining where should text be placed. You set you text color here-->
    <TextView
    android:id="@+id/list_content"
    android:textColor="#000000"
    android:gravity="left"
    android:text="sample"
         android:paddingTop="10dp"
    android:layout_margin="4dip"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:padding="7dp"
    />

    </LinearLayout>

这就是我实施的方式

 listview_Adpter la = new listview_Adpter(getActivity(), listname);
            lv.setAdapter(la);

每件事情都运作正常但列出视图显示数据的高度如何克服它?我想在中间显示它

4 个答案:

答案 0 :(得分:2)

android:layout_marginTop =&#34; 232dp&#34; ??你真的需要那个...我认为这是造成身高问题的原因。

答案 1 :(得分:1)

您可以设置custom_textview android:layout_height来自&#34; fill_parent&#34;到&#34; match_parent&#34;

答案 2 :(得分:1)

您只需删除custom_textview.xml中的LinearLayout即可 根本不需要它。

您可能需要将xmlns:android="http://schemas.android.com/apk/res/android"添加到TextView,并将其重力更改为android:gravity="left | center_vertical"

<强> [编辑]

您的最终行项目布局(custom_textview.xml):

<?xml version="1.0" encoding="utf-8"?>
<!-- Defining a List Item-->
<!-- Defining where should text be placed. You set you text color here-->
<TextView
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/list_content"
    android:textColor="#f000"
    android:gravity="left|center_vertical"
    android:text="sample"
    android:paddingTop="10dp"
    android:layout_margin="4dip"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:padding="7dp"
/>

[编辑2]

有关自定义行的更多提示:

你甚至可以进一步具体,给项目一个装饰(9个补丁添加边框或背景颜色,对于偶数和奇数项目也可能不同。)
您还可以向行添加自定义边距和/或填充 你甚至可以添加一个嵌入式(复合)drawable 文本可以有插入或凸起的方面(使用文本颜色及其阴影)。

所有这些只需一个TextView !!

答案 3 :(得分:0)

将以下布局用作custom_textview.xml ...

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:gravity="center_vertical" >

    <TextView
        android:id="@+id/list_content"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:gravity="left"
        android:padding="7dp"
        android:text="sample"
        android:textColor="#000000" />

</LinearLayout>

您的ListView项目的高度看起来更大,因为您正在顶部17dp padding4dp margin以及7dp padding4dp margin处应用Textview32dp TextView的底部...所以,它除了{{1}}之外还占用了{{1}}个额外空间。将它们最小化为上述布局......我认为,您的问题将得到解决。