Android 微调器未显示项目,仅显示箭头

Android Spinner no items shown only arrow

嘿,我已经检查了很多关于这个问题的其他问题,但所有的解决方案都没有帮助。所以我的问题是我也只看到微调器的箭头,没有显示任何项目。 所以我实际上有两个微调器,但它们的代码是相同的,所以没有发布另一个。希望有人知道如何解决这个问题。每一个想法都会很棒!

代码:

      var speedAdapter = ArrayAdapter.createFromResource(
            this,
            R.array.speedByte,
            android.R.layout.simple_spinner_item
        )

    speedAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item)
    this.speedSpinner.adapter = speedAdapter

XML:

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

    <Space
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="0.05"
        />

    <TextView
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:textStyle="bold"
        android:textSize="40sp"
        android:text="@string/app_name"
        android:textAlignment="center"
        android:layout_weight="0.1"
        />


    <com.google.android.material.tabs.TabLayout
        android:layout_height="0dp"
        android:layout_width="match_parent"
        android:layout_weight="0.1"
        android:orientation="vertical">

        <com.google.android.material.tabs.TabItem
            android:layout_height="wrap_content"
            android:layout_width="wrap_content"
            android:id="@+id/speedTab"
            android:text="@string/tab_text_download" />

        <com.google.android.material.tabs.TabItem
            android:layout_height="wrap_content"
            android:layout_width="wrap_content"
            android:id="@+id/pingTab"
            android:text="@string/tab_text_ping" />

    </com.google.android.material.tabs.TabLayout>


    <Space
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_weight="0.1"
        />

    <GridLayout
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:orientation="horizontal"
        android:columnCount="2"
        android:rowCount="6"
        android:layout_weight="0.4"

        >

        <Switch
            android:layout_height="0dp"
            android:layout_rowWeight="0.1"
            android:layout_columnWeight="1"
            android:gravity="fill"
            android:text="@string/bit_byte"
            android:layout_row="0"
            android:layout_column="1"
            android:id="@+id/sizeBitByteSwitcher"
            android:layout_gravity="center"
            />

        <Switch
            android:layout_height="0dp"
            android:layout_rowWeight="0.1"
            android:text="@string/bit_byte"
            android:layout_columnWeight="1"
            android:gravity="fill"
            android:layout_row="4"
            android:layout_column="1"
            android:layout_gravity="center"
            android:id="@+id/speedBitByteSwitcher"
            />

        <TextView
            android:layout_columnWeight="1"
            android:layout_column="0"
            android:layout_row="0"
            android:text="@string/note_size"/>

        <EditText
            android:id="@+id/textEditSize"
            android:layout_columnWeight="1"
            android:gravity="fill"
            android:layout_height="0dp"
            android:layout_row="1"
            android:layout_rowWeight="0.3"
            android:layout_column="0"
            android:ems="10"
            android:inputType="numberDecimal" />

        <Space
            android:layout_height="0dp"
            android:layout_columnWeight="1"
            android:gravity="fill"
            android:layout_rowWeight="0.2"
            android:layout_row="2"
            android:layout_column="0" />


        <TextView
            android:layout_columnWeight="1"
            android:layout_column="0"
            android:layout_row="3"
            android:text="@string/note_speed"/>

        <EditText
            android:id="@+id/textEditSpeed"
            android:layout_columnWeight="1"
            android:gravity="fill"
            android:layout_height="0dp"
            android:layout_row="4"
            android:layout_rowWeight="0.3"
            android:layout_column="0"
            android:ems="10"
            android:inputType="number|numberDecimal"
            android:importantForAutofill="no" />


        <Spinner
            android:id="@+id/sizeSpinner"
            android:layout_columnWeight="1"
            android:gravity="fill"
            android:spinnerMode="dropdown"
            android:layout_height="0dp"
            android:layout_column="1"
            android:layout_row="3"
            android:layout_gravity="center"
            android:layout_rowWeight="0.3"
            android:foreground="#000000"

            />

        <Space
            android:layout_columnWeight="1"
            android:gravity="fill"
            android:layout_height="0dp"
            android:layout_rowWeight="0.2"
            android:layout_row="2"
            android:spinnerMode="dropdown"
            android:layout_column="1" />


        <Spinner
            android:id="@+id/speedSpinner"
            android:layout_height="0dp"

            android:layout_columnWeight="1"
            android:gravity="fill"
            android:layout_row="5"
            android:layout_gravity="center"
            android:layout_rowWeight="0.3"
            />


    </GridLayout>

    <Button
        android:id="@+id/calcBtn"
        android:layout_width="wrap_content"
        android:layout_height="0dp"
        android:layout_weight="0.05"
        android:layout_gravity="center"
        android:text="@string/calc_btn"/>

    <TextView
        android:id="@+id/speedResultView"
        android:layout_height="0dp"
        android:layout_width="match_parent"
        android:textStyle="bold"
        android:textAlignment="center"
        android:textSize="30sp"
        android:layout_weight="0.2"
        android:text="RESULT"/>

</LinearLayout>

现在还有数组资源:

<string-array name="speedByte">
    <item name="Byte">Byte /s</item>
    <item name="Kilo">KiloByte /s</item>
    <item name="Mega">MegaByte /s</item>
    <item name="Giga">GigaByte /s</item>
    <item name="Terra">TerraByte /s</item>
</string-array>

只需将 entries 属性添加到您的 xml:

<Spinner
                android:id="@+id/speedSpinner"
                android:layout_height="0dp"
                android:entries="@array/speedByte"
                android:layout_columnWeight="1"
                android:gravity="fill"
                android:layout_row="5"
                android:layout_gravity="center"
                android:layout_rowWeight="0.3"
                />

实施您的代码后,我能够看到这些项目。你把字符串数组放在哪里?它应该在 strings.xml 文件中。

<resources>
    <string name="app_name">My Application</string>

    <string-array name="speedByte">
        <item name="Byte">Byte /s</item>
        <item name="Kilo">KiloByte /s</item>
        <item name="Mega">MegaByte /s</item>
        <item name="Giga">GigaByte /s</item>
        <item name="Terra">TerraByte /s</item>
    </string-array>
</resources>

同时增加微调器的高度,使其更易于点击。

您的代码似乎是正确的并且对我有用,但是在将 layout_height 更改为 wrap_content 之前我无法看到微调器。目前是 0dp 我想这就是它不可见的原因。

但是如果您仍然遇到这个问题,那么我建议您确认您的以下代码已执行。

this.speedSpinner.adapter = speedAdapter

尝试 this.It 应该有效: 首先获取您的字符串数组并将其转换为 List

    String[] speedByte= getResources().getStringArray(R.array.speedByte);
    List<String> lstSpeedByte = Arrays.asList(speedByte);

然后将列表传递给ArrayAdapter:

    ArrayAdapter<String> adapterSpinner =
            new ArrayAdapter<>(your context, android.R.layout.simple_spinner_item, lstSpeedByte );


    speedAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    speedSpinner.setAdapter(adapterSpinner);