首页 > 解决方案 > LinearLayout 不均匀地改变微调器的高度

问题描述

我在我的项目中使用微调器,并从数据库上传您的信息。到目前为止一切都很好,然而,在执行过程中,微调器的高度总是大于其他组件的高度。我在堆栈上查找了几种关于如何平均分配组件的情况,但是我的微调器很顽固,在我看来还有其他问题。

这是我的布局文件

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:layout_marginStart="5dp"
    android:layout_marginTop="5dp"
    android:layout_marginEnd="5dp"
    android:layout_marginBottom="5dp"
    android:orientation="vertical">

    <TextView
        android:id="@+id/textView4"
        style="?android:textAppearanceSmall"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="10dp"
        android:layout_marginBottom="10dp"
        android:text="@string/activity_registervalues_message" />

    <EditText
        android:id="@+id/textview_valuespoint_pointname"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:autofillHints=""
        android:hint="@string/activity_registervalues_textview_point"
        android:inputType="textPersonName"></EditText>

    <Spinner
        android:id="@+id/spinner_valuespoint"
        style="?android:spinnerItemStyle"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"></Spinner>

    <EditText
        android:id="@+id/textview_valuespoint_pointvalue"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:autofillHints=""
        android:hint="@string/activity_registervalues_textview_value"
        android:inputType="none|numberDecimal"></EditText>

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="10dp"
        android:orientation="horizontal">

        <Button
            android:id="@+id/button_valuespoint_novo"
            style="?android:textAppearanceSmall"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="@string/activity_registervalues_button_novo"></Button>

        <Button
            android:id="@+id/button_valuespoint_save"
            style="?android:textAppearanceSmall"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="@string/activity_registervalues_button_salvar"></Button>

        <Button
            android:id="@+id/button_valuespoint_close"
            style="?android:textAppearanceSmall"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="@string/activity_registervalues_button_fechar" />
    </LinearLayout>

    <ListView
        android:id="@+id/listview_valuespoint"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent">
    </ListView>

</LinearLayout>

样式.xml

<resources>
    <style name="AppTheme" parent="@style/Theme.AppCompat.Light.DarkActionBar">
        <item name="textAppearanceFinish">@style/TextAppearanceFinish</item>
    </style>

    <style name="WizardTheme" parent="android:Theme.Holo.Light.DarkActionBar">
        <item name="textAppearanceFinish">@style/TextAppearanceFinish</item>
    </style>

    <style name="TextAppearanceFinish" parent="android:TextAppearance.Holo.Medium">
        <item name="android:textColor">#fff</item>
    </style>
</resources>

在java类中,我有适配器

public ArrayAdapter createArrayAdapter() {
    ArrayAdapter spinnerArrayAdapter = new ArrayAdapter(this,
            android.R.layout.simple_spinner_dropdown_item,
            getSelectedAttributeList()); 

    return spinnerArrayAdapter;
}

为什么微调器的高度会发生变化?

编辑:屏幕

项目时的屏幕

项目时间

执行中的画面

执行时间处理时间

如您所见,在项目时间中空间是均等的,但在执行时间中可能会看到差异

标签: androidspinnerandroid-linearlayout

解决方案


问题出在 createArrayAdapter 中。我应该使用simple_spinner_item

所以:

public ArrayAdapter createArrayAdapter() {
    ArrayAdapter spinnerArrayAdapter = new ArrayAdapter(this,
            android.R.layout.simple_spinner_item,
            getSelectedAttributeList());
    spinnerArrayAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    return spinnerArrayAdapter;
}

推荐阅读