Câu trả lời:
Tôi không chắc về điều này, nhưng hãy thử xem.
Trong chuỗi của bạn, hãy xác định:
<string-array name="array_name">
<item>Array Item One</item>
<item>Array Item Two</item>
<item>Array Item Three</item>
</string-array>
Trong bố cục của bạn:
<Spinner
android:id="@+id/spinner"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:drawSelectorOnTop="true"
android:entries="@array/array_name"
/>
Tôi đã nghe điều này không phải lúc nào cũng làm việc với nhà thiết kế, nhưng nó biên dịch tốt.
drawSelectorOnTop
vì không có bộ chọn riêng nào ngoài Spinner. Các giải pháp chắc chắn hoạt động mặc dù, cảm ơn!
android:entryValues
. ListPreference không hỗ trợ nó.
Spinner
và AbsSpinner
. Trên cả API 19 và 23, hàm tạo của absSpinner sử dụng R.styleable.AbsSpinner_entries
nhưng chúng không sử dụng ở đâu entryValues
. Chỉ có một sự trùng hợp ngẫu nhiên là mã của bạn đang làm những gì bạn mong đợi. (Hoặc có thể ROM của một số nhà sản xuất có triển khai Spinner tùy chỉnh thực sự xử lý android:entryValues
?)
Xác định điều này trong tệp String.xml của bạn và đặt tên cho mảng bạn muốn, chẳng hạn như "Trọng lượng"
<string-array name="Weight">
<item>Kg</item>
<item>Gram</item>
<item>Tons</item>
</string-array>
và mã này trong layout.xml của bạn
<Spinner
android:id="@+id/fromspin"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:entries="@array/Weight"
/>
Trong tệp java của bạn, getActivity
được sử dụng trong đoạn; nếu bạn viết mã đó trong hoạt động, sau đó loại bỏ 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;
}
Liên quan đến nhận xét đầu tiên: Nếu bạn làm điều này, bạn sẽ gặp lỗi (trong Android Studio). Điều này liên quan đến việc nó nằm ngoài không gian tên Android. Nếu bạn không biết cách khắc phục lỗi này, hãy xem ví dụ bên dưới. Hi vọng điêu nay co ich!
Ví dụ -Trước khi:
<string-array name="roomSize">
<item>Small(0-4)</item>
<item>Medium(4-8)</item>
<item>Large(9+)</item>
</string-array>
Ví dụ - Sau:
<string-array android:name="roomSize">
<item>Small(0-4)</item>
<item>Medium(4-8)</item>
<item>Large(9+)</item>
</string-array>
string-array
có name
thuộc tính và không nhận ra thuộc tính đó android:name
.
android:entryValues="@array/array_name_values"
.