문제

Android 1.6에서 스피너 (드롭 다운 메뉴)를 탭하면 스피너 옵션 옆에 라디오 버튼이 나타납니다. 옵션 텍스트 만 남아 있도록 라디오 버튼을 제거하려면 어떻게해야합니까?

도움이 되었습니까?

해결책

라디오 버튼을 제거하려면 고유 한 어댑터 클래스가 필요하지 않습니다.

레이아웃에서 dropdown_item.xml을 만듭니다

<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" />

그런 다음 코드에서 다음 호출을하십시오.

arrayAdapter.setDropDownViewResource(R.layout.dropdown_item);

기본 스피너 드롭 다운 항목은 라디오 버튼이있는 CheckedTextView입니다. 여기에서 텍스트 뷰로 바꾸십시오.

다른 팁

안드로이드 레이아웃을 사용할 수 있습니다

android.R.layout.simple_spinner_item 

대신에

android.R.layout.simple_spinner_dropdown_item

그러나 나는 추천한다 @kimkunjj 답, 레이아웃의 제어를 제공합니다.

스피너 목록에서 라디오 버튼을 제거하려면 자신만의 레이아웃에 행을 제공해야합니다.
아래 예를 살펴보십시오.


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);          
        }   

    }
}


Spinner Row의 사용자 정의 레이아웃은 ID가 "Text"인 TextView 요소 하나가있는 간단한 선형 레이아웃입니다 (Android : id = "@+id/text").

이것은 단순한 예입니다. 텍스트 뷰보다 더 멋진 레이아웃이 필요한 경우 myspinneradapter의 getView () 메소드를 무시해야 할 것입니다.

"Android.r.layout.simple_spinner_item"은 작업을 수행합니다.

프로그래밍 방식은 다음과 같습니다.

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);

Android Support Library 버전 18 이상을 프로젝트에 포함시킨 경우 리소스 ID를 교체 할 수 있습니다. simple_spinner_dropdown_item ~와 함께 support_simple_spinner_dropdown_item. 라디오 버튼을 제거합니다.

사용 simple_dropdown_item_1line

이 작업을 수행하는 "가장 깨끗한"방법 (체크 마크를 제거하고 ~ 아니다 텍스트 스타일, 항목 크기 등을 포함하여 모든 thinbg를 터치합니다. 위의 답변과 같은) 사용자 정의 어댑터를 작성하는 것입니다.

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;
    }
}

주목하십시오 getDropDownView() 드롭 다운 목록 항목의보기를 반환하는 메소드. 여기에서 모든 사용자 정의보기를 사용할 수 있지만 기본보기를 고수하려면 위의 코드를 사용해야합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top