13

いくつかのオプションを持つスピナーがあり、それぞれに単純な文字列が表示されます。最初は、テキストはすべて白です。ただし、ユーザーがオプションを選択すると (一番上に表示されるようになる)、そのテキストを赤くしたいと思います。

これどうやってするの?

編集:解決

public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) {
   ((TextView) arg1).setTextColor(Color.parseColor("#E3170D"));
}
4

6 に答える 6

22

ユーザーがオプションを選択すると (それが一番上に表示されるようになります)、そのテキストを赤くしたいと思います。

そのため、Spinner 用に OnItemSelectedListener() を作成した可能性が高いでしょう。したがって、 onItemSelected() メソッドでは、テキストの色を簡単に変更できます。

擬似コード:

public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) {
   TextView selectedText = (TextView) parent.getChildAt(0);
   if (selectedText != null) {
      selectedText.setTextColor(Color.RED);
   }
}

それが役に立てば幸い。

于 2013-03-22T08:55:07.313 に答える
2

ここでこの回答を参照してください。コピーして貼り付けます

  1. カスタム ビュー レイアウトを作成する (例: TextView から)
  2. セレクターを作成し、そのビューの背景として設定します
  3. カスタム ビューでスピナーを設定する

セレクター: custom_selector.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_focused="true" 
          android:state_pressed="false" 
          android:drawable="@color/light_grey" />
    <item android:state_focused="true" 
          android:state_pressed="true"
          android:drawable="@color/light_grey" />
    <item android:state_focused="false" 
          android:state_pressed="true"
      android:drawable="@color/light_grey" />
    <item android:state_selected="true" android:drawable="@color/light_grey"/>
    <item android:drawable="@color/white" />
</selector>

カスタム ビュー レイアウト: my_simple_item

<?xml version="1.0" encoding="utf-8"?>
<TextView
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:lines="1"
android:padding="5dip"
android:background="@drawable/custom_selector"/>

スピナーの初期化:

String[] items = new String[] {"One", "Two", "Three"};
Spinner spinner = (Spinner) findViewById(R.id.mySpinner);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.my_simple_item, items);

お役に立てれば

于 2013-03-22T07:15:50.753 に答える
0

次のように作成します。

 <?xml version="1.0" encoding="utf-8"?>
 <selector xmlns:android="http://schemas.android.com/apk/res/android">
 <item android:state_pressed="false" android:drawable="@color/red" />
 <item android:drawable="@android:color/transparent" />
  </selector>

そしてあなたの活動xmlで:

 <Spinner...............
 android:drawSelectorOnTop="true"
  android:background="@drawable/sample"/>  
于 2013-03-22T07:16:25.123 に答える
0

OnItemSelectedListenerをスピナーに追加するだけです。

qtySpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
        @Override
        public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
            ((TextView) view).setTextColor(Color.BLACK); //Change selected text color
        }

        @Override
        public void onNothingSelected(AdapterView<?> parent) {

        }
    });
于 2017-02-09T08:50:32.630 に答える