質問

は、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あります。ここでは、あなたのTextViewと交換します。

他のヒント

あなたは、Androidのレイアウトを使用することができます。

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

    }
}


スピナー行のカスタムレイアウトは、IDが「テキスト」(:ID =「@ + ID /テキスト」アンドロイド)であるもののTextView要素を有する単純なのLinearLayoutであります

これは単純な例です。あなたはおそらくMySpinnerAdapterのgetViewメソッド()メソッドをオーバーライドしなければならないだけのTextViewよりも派手なレイアウトが必要な場合。

"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サポートライブラリのバージョン18以上が含まれている場合、あなたはsimple_spinner_dropdown_itemとリソースID support_simple_spinner_dropdown_itemを置き換えることができます。これは、ラジオボタンが削除されます。

使用simple_dropdown_item_1line

これを行うには、

「クリーン」な方法(単にチェックマークを削除し、のなどのテキストスタイル、アイテムサイズなど他の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()方法を注意してください。あなたは、おそらく上記のコードを使用するデフォルトのビューに固執したい場合は、ここで任意のカスタムビューを使用しますが、ことができます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top