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