2010-10-27 24 views

Trả lời

439

Tôi không chắc chắn về điều này, nhưng hãy cho nó một shot.

Trong strings.xml bạn 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 trên các nhà thiết kế, nhưng nó biên dịch tốt.

+0

tuyệt vời, cảm ơn rất nhiều! – cambraca

+33

Chỉ muốn thêm rằng nếu bạn muốn các giá trị riêng biệt cho mỗi mục đã chọn, bạn có thể chỉ định 'android: entryValues ​​=" @ array/array_name_values ​​"'. –

+2

Một lưu ý nhanh ... từ sự hiểu biết của tôi, Spinners không hỗ trợ 'drawSelectorOnTop' vì không có một bộ chọn riêng biệt khác với chính Spinner. Các giải pháp chắc chắn hoạt động mặc dù, cảm ơn! – Jabari

8

Xác định này Trong bạn String.xml nộp và tên của mảng là như bạn muố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 bạn Layout.xml

<Spinner 
     android:id="@+id/fromspin" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:entries="@array/Weight" 
    /> 

Trong Bạn java file getactivity được sử dụng trong phân đoạn nếu bạn viết mã đó vào 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; 
    } 
+0

Điều này làm việc tốt hơn cho tôi. Cảm ơn! –

0

Liên quan đến bình luận đầu tiên: Nếu bạn làm điều này bạn sẽ nhận được một lỗi (trong Android Studio). Điều này là liên quan đến nó được ra khỏ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ụ -Before:

<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> 
+0

Không hoạt động. Tệp XML muốn 'string-array' của mình có thuộc tính' name' và không nhận ra 'android: name'. –

Các vấn đề liên quan