2009-12-12 61 views
5

Trong Android 1.6, khi nhấn vào một spinner (menu thả xuống), các nút radio xuất hiện bên cạnh các tùy chọn spinner. Làm cách nào để xóa các nút radio đó để chỉ văn bản tùy chọn vẫn còn?Android Spinner - Cách xóa nút radio?

Trả lời

23

Chỉ cần xóa các nút radio, bạn không cần lớp bộ điều hợp riêng của mình.

Tạo một dropdown_item.xml trong cách bố trí

<TextView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@android:id/text1" 
    style="?android:attr/spinnerDropDownItemStyle" 
    android:singleLine="true" 
    android:layout_width="fill_parent" 
    android:layout_height="?android:attr/listPreferredItemHeight" 
    android:ellipsize="marquee" /> 

sau đó thực hiện cuộc gọi sau đây trong các mã.

arrayAdapter.setDropDownViewResource(R.layout.dropdown_item); 

Mục thả xuống spinner mặc định là CheckedTextView có nút radio. Ở đây bạn thay thế nó bằng một TextView.

+0

Tốt và đơn giản! – Bruiser

+0

Có phải là 'android: id = "@ android: id/text1" 'không? – cprcrack

4

Nếu bạn muốn loại bỏ các nút radio trên danh sách spinner, bạn phải cung cấp bố cục riêng cho hàng.
Hãy xem ví dụ dưới đây:


package com.ramps; 

import android.app.Activity; 
import android.content.Context; 
import android.os.Bundle; 
import android.widget.ArrayAdapter; 
import android.widget.Spinner; 
import android.widget.SpinnerAdapter; 

public class MySpinner extends Activity { 
    //data that will be used as a spinner options 
    private static String data[] = {"one", "two", "three"}; 

    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     //main.xml file contains spinner 
     setContentView(R.layout.main); 
     Spinner spinner = (Spinner) findViewById(R.id.spinner); 
     //create your own adapter 
     MySpinnerAdapter adapter = new MySpinnerAdapter(this,R.layout.custom_spinner_row,R.id.text, data); 
     //set your custom adapter 
     spinner.setAdapter(adapter); 
    } 


    private class MySpinnerAdapter extends ArrayAdapter{ 

     public MySpinnerAdapter(Context context, int resource, 
       int textViewResourceId, String[] objects) { 
      super(context, resource, textViewResourceId, objects);   
     } 

    } 
} 


Cách bố trí tùy chỉnh cho hàng spinner chỉ là một LinearLayout đơn giản với một yếu tố TextView đó id là "văn bản" (android: id = "@ + id/text ")

Đây chỉ là ví dụ đơn giản. Nếu bạn cần bố trí ưa thích hơn là chỉ TextView, bạn có lẽ sẽ phải ghi đè lên phương thức getView() của MySpinnerAdapter.

5

Bạn có thể sử dụng cách bố trí android

android.R.layout.simple_spinner_item 

thay vì

android.R.layout.simple_spinner_dropdown_item 

nhưng tôi khuyên bạn nên @kimkunjj câu trả lời, nó sẽ cung cấp cho bạn sự kiểm soát của bố cục.

1

"android.R.layout.simple_spinner_item" không được công việc,

lập trình đó là:

modeSpinner=new Spinner(layout.getContext()); 
ArrayAdapter<String> arrayAdapter=new ArrayAdapter<String>(layout.getContext(),  
    android.R.layout.simple_spinner_item, Arrays.asList(modes)); 
arrayAdapter.setDropDownViewResource(android.R.layout.simple_spinner_item); 
0

Cách "sạch" để làm điều này (chỉ cần loại bỏ các dấu kiểm và không liên lạc anythinbg khác bao gồm kiểu văn bản, kích thước mục, vv) là tạo bộ điều hợp tùy chỉnh (như trong các câu trả lời ở trên):

public class SimpleSpinnerArrayAdapter extends ArrayAdapter<String> { 

    public SimpleSpinnerArrayAdapter(Context context, String[] data) { 
     super(context, android.R.layout.simple_spinner_item, data); 
     this.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
    } 

    public SimpleSpinnerArrayAdapter(Context context, List<String> data) { 
     super(context, android.R.layout.simple_spinner_item, data); 
     this.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
    } 

    /** 
    * Returns default dropdown view with removed checkbox 
    */ 
    public View getDropDownView(int position, View convertView, ViewGroup parent) { 
     View view = super.getDropDownView(position, convertView, parent); 
     if (view != null && view instanceof CheckedTextView) { 
      ((CheckedTextView) view).setCheckMarkDrawable(null); 
     } 
     return view; 
    } 
} 

Hãy lưu ý getDropDownView() phương thức trả về chế độ xem cho mục danh sách thả xuống. Bạn có thể sử dụng bất kỳ chế độ xem tùy chỉnh nào ở đây nhưng nếu bạn muốn gắn vào chế độ xem mặc định, bạn có thể nên sử dụng mã ở trên.

1

Nếu bạn đã đưa thư viện hỗ trợ Android phiên bản 18 trở lên vào dự án của mình thì bạn có thể thay thế id tài nguyên simple_spinner_dropdown_item bằng support_simple_spinner_dropdown_item. Điều đó sẽ loại bỏ nút radio.

1

sử dụng simple_dropdown_item_1line