无法在ListView中设置相等的行高

时间:2019-06-10 00:45:19

标签: c# android xamarin.android

我有问题。我使用自定义适配器创建了ListView。因此,我只为1行创建了一个新的布局。在该布局中,我将主布局的高度设置为120dp,但是在创建列表时,所有行都不相等,并且我认为不是120dp。这是行布局的代码:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal"
    android:layout_width="match_parent"
    android:layout_height="120dp"
    android:minWidth="0px"
    android:minHeight="50px"
    android:background="#edf0f4">

    <LinearLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="vertical"
        android:layout_width="0dp"
        android:layout_weight="70"
        android:layout_height="match_parent"
        android:background="#edf0f4"
        android:id="@+id/LayoutSettingName">
        <TextView
            android:text="Dark Theme"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:id="@+id/txtSettingName"
            android:textColor="#000000"
            android:autoSizeMaxTextSize="20dp"
            android:autoSizeMinTextSize="17dp"
            android:autoSizeTextType="uniform"
            android:layout_marginLeft="2dp"
            android:layout_marginRight="2dp"
            android:textStyle="bold" />
        <TextView
            android:text="Change the theme to something more dark"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:id="@+id/txtSettingDescription"
            android:textColor="#666666"
            android:autoSizeMaxTextSize="18dp"
            android:autoSizeMinTextSize="16dp"
            android:autoSizeTextType="uniform"
            android:layout_marginLeft="2dp"
            android:layout_marginRight="2dp" />
    </LinearLayout>
    <LinearLayout
        android:orientation="horizontal"
        android:layout_width="0dp"
        android:layout_weight="30"
        android:layout_height="match_parent"
        android:background="#edf0f4"
        android:id="@+id/LayoutSettingValue"
        android:gravity="center">
        <EditText
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:background="#dddddd"
            android:textColor="#FFFFFF"
            android:id="@+id/SettingEditText" />
        <Spinner
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:id="@+id/SettingSpinner" />
        <Switch
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:minWidth="25px"
            android:minHeight="25px"
            android:id="@+id/SettingSwitch" />
    </LinearLayout>
</LinearLayout>

这是我现在拥有的ListView的屏幕截图: enter image description here

我希望行的大小是第一行的两倍,但是我给它们的大小并不重要,它们总是看起来像这样。

我在做什么错了?

1 个答案:

答案 0 :(得分:0)

如果您回顾源代码,可以看到filterStandings({ type, target }) { this.$store.commit("set_search", target.value); } 将调用ListView来获取View,在这种方法中,父{{1 }}会被调用,它会生成一个makeAndAddView(... )宽度和obtainView高度的AbsListView,因此您在XML项中设置的高度不会生效,因为ListView的默认高度为LayoutParams项目

您可以通过以下两种方式进行更改:

1。再一次将XML布局嵌套:

AbsListView.LayoutParams

2。在Adapter的getView方法中为convertView手动设置abslistview.layoutparams

MATCH_PARENT