设置ListView行高

时间:2015-10-30 13:47:49

标签: java android android-listview

我的申请中遇到了问题。

我使用ListView来显示我的产品 我无法得到效果,每个项目都显示在整个屏幕上 我的意思是,每行继承高度。

这是我的ListView布局:

<?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="fill_parent"
    android:orientation="vertical"
    android:weightSum="4">
    <!-- Main ListView
         Always give id value as list(@android:id/list)
    -->
    <LinearLayout
        android:orientation="horizontal"
        android:layout_width="match_parent"
        android:layout_height="fill_parent"
        android:layout_weight="3"
        android:weightSum="2"
        android:background="@color/pod_logo">

        <ImageView
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:id="@+id/iVlogo_obiekty"
            android:src="@drawable/logo_akme"
            android:layout_weight="1" />

        <TextView
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:text="NAZWA OBIEKTU"
            android:id="@+id/tV_nazwa_obiektu"
            android:gravity="center"
            android:textColor="#fff"
            android:textSize="20dp"
            android:background="@color/niebieski"
            android:layout_weight="1" />
    </LinearLayout>

    <ListView
        android:id="@android:id/list"
        android:layout_width="match_parent"
        android:layout_height="fill_parent"
        android:layout_weight="1"
        android:background="#000" />

</LinearLayout>

这是我的行布局:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#fff"
    android:orientation="vertical">

    <!-- Product id (pid) - will be HIDDEN - used to pass to other activity -->
    <TextView
        android:id="@+id/pid"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:visibility="gone"
        android:layout_marginLeft="0dp"
        android:layout_marginTop="0dp"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true" />

    <!-- Name Label -->
    <TextView
        android:id="@+id/name"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:textSize="17sp"
        android:textStyle="bold"
        android:gravity="center"
        android:height="40dp"
        android:textColor="#fff"
        android:background="#123456"

        android:text="TEXT"
        android:layout_alignParentLeft="true"
        android:layout_marginLeft="0dp"
        android:layout_alignParentTop="true"
        android:layout_marginTop="0dp" />

</LinearLayout>

我改变了概念,我现在想要这样的照片:

EXAMPLE

有人想帮助我吗? PLS。我不知道我必须改变什么:/

1 个答案:

答案 0 :(得分:0)

您可以尝试以编程方式设置行高。请注意,下面的代码是未经测试的/来自内存,因此可能需要一些调整,但实质上它会在适配器的构造函数(或其他地方)中抓取屏幕的高度并将其存储到screenHeight。然后,您可以使用它来设置getView()中每行的高度:

private int screenHeight;
//...
    WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
    DisplayMetrics metrics = new DisplayMetrics();
    wm.getDefaultDisplay().getMetrics(metrics);
    screenHeight = metrics.heightPixels;
//...

@Override
public View getView (int position, View convertView, ViewGroup parent) {
    if( convertView == null ){
        convertView = inflater.inflate(R.layout.row, parent, false);
    }
    LayoutParams params = convertView.getLayoutParams();
    if (params.height != screenHeight) params.height = screenHeight;

    convertView.setLayoutParams(params);

    return convertView;
}

编辑:请注意,上面的代码假设您在适配器的构造函数中传递Context参数,或者您可以直接传递screenHeight等。