Android Spinner нет предметов показаны только стрелка - PullRequest
0 голосов
/ 23 октября 2019

Эй, я уже проверил много других вопросов по этой проблеме, но все решения не помогли. Так что моя проблема в том, что я также вижу стрелку вертушки, а предметы не отображаются. Так что у меня на самом деле есть два блесны, но их код такой же, так что другой не выложили. Надеюсь, у кого-то есть идея, как решить эту проблему. Было бы здорово для любой идеи!

Код:

      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>

Ответы [ 4 ]

1 голос
/ 23 октября 2019

После реализации вашего кода я смог увидеть элементы. Где вы положили массив строк? Он должен быть в файле 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>

Также увеличьте высоту счетчика, чтобы сделать его более интерактивным.

1 голос
/ 23 октября 2019

Ваш код кажется правильным, и он сработал для меня, но я не могу видеть счетчик, пока я не изменил layout_height на wrap_content. В настоящее время это 0dp Полагаю, именно поэтому его не видно.

Но если вы все еще сталкиваетесь с этой проблемой, то я предлагаю вам подтвердить, что ваш следующий код выполняется.

this.speedSpinner.adapter = speedAdapter
0 голосов
/ 23 октября 2019

Попробуйте это. Это должно сработать: сначала получите массив строк и приведите его к списку

    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);
0 голосов
/ 23 октября 2019

Просто добавьте атрибут записи в ваш 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"
                />
...