Apakah mungkin untuk mengisi opsi Spinner tepat di tata letak xml? Halaman ini menyarankan saya harus menggunakan ArrayAdapter? Tampaknya canggung tidak bisa melakukannya ..
Apakah mungkin untuk mengisi opsi Spinner tepat di tata letak xml? Halaman ini menyarankan saya harus menggunakan ArrayAdapter? Tampaknya canggung tidak bisa melakukannya ..
Jawaban:
Saya tidak yakin tentang ini, tetapi mencobanya.
Di strings.xml Anda tentukan:
<string-array name="array_name">
<item>Array Item One</item>
<item>Array Item Two</item>
<item>Array Item Three</item>
</string-array>
Di tata letak Anda:
<Spinner
android:id="@+id/spinner"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:drawSelectorOnTop="true"
android:entries="@array/array_name"
/>
Saya pernah mendengar ini tidak selalu berhasil pada perancang, tetapi kompilasi baik-baik saja.
drawSelectorOnTopkarena tidak ada pemilih terpisah selain Spinner itu sendiri. Solusinya pasti berhasil, terima kasih!
android:entryValues. ListPreference mendukungnya.
Spinnerdan AbsSpinner. Pada API 19 dan 23, konstruktor AbsSpinner menggunakan R.styleable.AbsSpinner_entriestetapi tidak ada di mana pun mereka gunakan entryValues. Hanya kebetulan bahwa kode Anda melakukan apa yang Anda harapkan. (Atau mungkin beberapa ROM pabrikan memiliki implementasi Spinner khusus yang benar-benar menangani android:entryValues?)
Tentukan ini di file String.xml Anda dan beri nama array apa yang Anda inginkan, seperti "Bobot"
<string-array name="Weight">
<item>Kg</item>
<item>Gram</item>
<item>Tons</item>
</string-array>
dan kode ini di layout.xml Anda
<Spinner
android:id="@+id/fromspin"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:entries="@array/Weight"
/>
Dalam file java Anda, getActivitydigunakan dalam fragmen; jika Anda menulis kode itu dalam aktivitas, maka hapus 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;
}
Berkenaan dengan komentar pertama: Jika Anda melakukan ini, Anda akan mendapatkan kesalahan (di Android Studio). Ini sehubungan dengan itu keluar dari namespace Android. Jika Anda tidak tahu cara memperbaiki kesalahan ini, lihat contoh di bawah ini. Semoga ini membantu!
Contoh -Sebelum:
<string-array name="roomSize">
<item>Small(0-4)</item>
<item>Medium(4-8)</item>
<item>Large(9+)</item>
</string-array>
Contoh - Setelah:
<string-array android:name="roomSize">
<item>Small(0-4)</item>
<item>Medium(4-8)</item>
<item>Large(9+)</item>
</string-array>
string-arraymemiliki nameatribut, dan tidak mengenali android:namesatu.
android:entryValues="@array/array_name_values".