在布局 XML 中直接填充 Spinner 的选项,是否可行?这个页面建议我使用 ArrayAdapter。不这样做好像有些尴尬。
我不确定,但试试看。
在你的 strings.xml 文件中定义:
<string-array name="array_name">
<item>Array Item One</item>
<item>Array Item Two</item>
<item>Array Item Three</item>
</string-array>
在你的布局中:<Spinner
android:id="@+id/spinner"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:drawSelectorOnTop="true"
android:entries="@array/array_name"
/>
我听说这在设计师上不总是起作用,但它可以成功编译。
在您的String.xml文件中定义它,并将数组命名为您想要的名称,例如"Weight"
<string-array name="Weight">
<item>Kg</item>
<item>Gram</item>
<item>Tons</item>
</string-array>
并将此代码放置在您的layout.xml文件中
<Spinner
android:id="@+id/fromspin"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:entries="@array/Weight"
/>
在您的Java文件中,getActivity
在片段中使用;如果您将该代码编写在活动中,则需删除 getActivity
。
a = (Spinner) findViewById(R.id.fromspin);
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this.getActivity(),
R.array.weight, android.R.layout.simple_spinner_item);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
a.setAdapter(adapter);
a.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) {
if (a.getSelectedItem().toString().trim().equals("Kilogram")) {
if (!b.getText().toString().isEmpty()) {
float value1 = Float.parseFloat(b.getText().toString());
float kg = value1;
c.setText(Float.toString(kg));
float gram = value1 * 1000;
d.setText(Float.toString(gram));
float carat = value1 * 5000;
e.setText(Float.toString(carat));
float ton = value1 / 908;
f.setText(Float.toString(ton));
}
}
public void onNothingSelected(AdapterView<?> parent) {
// Another interface callback
}
});
// Inflate the layout for this fragment
return v;
}
<string-array name="roomSize">
<item>Small(0-4)</item>
<item>Medium(4-8)</item>
<item>Large(9+)</item>
</string-array>
示例 - 之后:
<string-array android:name="roomSize">
<item>Small(0-4)</item>
<item>Medium(4-8)</item>
<item>Large(9+)</item>
</string-array>
string-array
拥有一个name
属性,但无法识别android:name
属性。 - Dan Chaltiel
android:entryValues="@array/array_name_values"
。 - Ε Г И І И ОdrawSelectorOnTop
,因为除了Spinner本身之外,没有单独的选择器。不过这个解决方案肯定有效,谢谢! - Jabariandroid:entryValues
’╝īĶĆīListPreferenceµö»µīüŃĆé - TalkLittleSpinner
和AbsSpinner
的源代码。在API 19和23上,AbsSpinner
构造函数使用了R.styleable.AbsSpinner_entries
,但是没有使用entryValues
。你的代码之所以能按照你的预期行事只不过是巧合而已。(或者一些制造商的ROM实际上处理了android:entryValues
?) - TalkLittle