2009-12-12 6 views
5

Android 1.6では、スピナー(ドロップダウンメニュー)をタップすると、スピナーオプションの横にラジオボタンが表示されます。オプションのテキストだけが残るように、これらのラジオボタンを削除するにはどうすればよいですか?Android Spinner - ラジオボタンの削除方法

答えて

23

ラジオボタンを削除するだけで、独自のアダプタクラスは必要ありません。

コードに次の呼び出しを行い、その後、レイアウトに

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

をdropdown_item.xmlを作成します。

arrayAdapter.setDropDownViewResource(R.layout.dropdown_item); 

デフォルトのスピナードロップダウンアイテムは、ラジオボタンを持つCheckedTextViewです。ここでTextViewに置き換えます。

+0

ニースとシンプル! – Bruiser

+0

'android:id =" @アンドロイド:id/text1 "はオプションですか? – cprcrack

4

スピナーリストのラジオボタンを取り除きたい場合は、独自のレイアウトをレイアウトに提供する必要があります。 ID = "@ + ID:スピナー行のためのカスタムレイアウトは、idが「テキスト」である1つのTextView要素(アンドロイドとの単純なのLinearLayoutである


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

    } 
} 



は、以下の例を見てみましょう/ text ")

これは単なる例です。 TextViewだけではなく、もっとレイアウトが必要な場合は、おそらくMySpinnerAdapterのgetView()メソッドをオーバーライドする必要があります。

5

あなたが代わりに

android.R.layout.simple_spinner_dropdown_item 

Androidのレイアウト

android.R.layout.simple_spinner_item 

を使用することができますが、私は@kimkunjj答えをお勧めします、それはあなたのレイアウトの制御を行います。

1

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

これを行うには、 "クリーン" な方法(単にチェックマークとないタッチを削除テキストスタイル、アイテムサイズなどを含むanythinbg)はカスタムアダプタを作成することです(上の回答のように):

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()ドロップダウンリスト項目のビューを返すメソッドです。任意のカスタムビューを使用することができますが、デフォルトのビューに固執したい場合は、おそらく上記のコードを使用する必要があります。

1

アンドロイドサポートライブラリバージョン18以上をプロジェクトに追加した場合は、リソースID simple_spinner_dropdown_itemsupport_simple_spinner_dropdown_itemに置き換えることができます。ラジオボタンが削除されます。

1

使用simple_dropdown_item_1line