Tuesday, 2 July 2013

Change spinner text color by button click

We can change the color of spinner text by click the button. Following four steps will explain it clearly.
1. Create a xml named spinnertext.xml in res/layout folder. Here we customize the text of spinner.

spinnertext.xml

<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/spinnerText"
    style="?android:attr/spinnerItemStyle"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:gravity="center"
    android:paddingBottom="2dp"
    android:paddingLeft="6dp"
    android:textColor="#662293" />

2. Create a xml named spinner_selector.xml in res/layout folder. Here we customize the spinner drop down menu.

spinner_selector.xml

<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    style="?android:attr/spinnerItemStyle"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:padding="10dp"
    android:textColor="#000000" />

3. Now main.xml. Here I get the togglebutton to change the color.

main.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <ToggleButton
        android:id="@+id/toggleButton1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="ToggleButton" />

    <Spinner
        android:id="@+id/spinner1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

</LinearLayout>

4. Now in code we can work with toggle button to change the color.

code for toggle buttton
ToggleButton mToggleButton = (ToggleButton) findViewById(R.id.toggleButton1);
   mToggleButton.setOnCheckedChangeListener(new OnCheckedChangeListener() {

       @Override
       public void onCheckedChanged(CompoundButton arg0, boolean isChecked) {
           TextView tv = (TextView) findViewById(R.id.spinnerText);
           if (isChecked)
               tv.setTextColor(Color.BLUE);
           else
               tv.setTextColor(Color.RED);

       }
});

code for spinner adapter
String array[] = { "one", "two", "three" };
ArrayAdapter sp_adapter = new ArrayAdapter(this, R.layout.spinnertext, array);
sp_adapter.setDropDownViewResource(R.layout.spinner_selector);
Spinner sp = (Spinner) findViewById(R.id.spinner1);
sp.setAdapter(sp_adapter);


complete code
SpinnerTextActivity.java
package com.example.spinnertext;

import android.app.Activity;
import android.graphics.Color;
import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.CompoundButton;
import android.widget.CompoundButton.OnCheckedChangeListener;
import android.widget.Spinner;
import android.widget.TextView;
import android.widget.ToggleButton;

public class SpinnerTextActivity extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        ToggleButton mToggleButton = (ToggleButton) findViewById(R.id.toggleButton1);
        mToggleButton.setOnCheckedChangeListener(new OnCheckedChangeListener() {

            @Override
            public void onCheckedChanged(CompoundButton arg0, boolean isChecked) {
                TextView tv = (TextView) findViewById(R.id.spinnerText);
                if (isChecked)
                    tv.setTextColor(Color.BLUE);
                else
                    tv.setTextColor(Color.RED);

            }
        });
        
        String array[] = { "one", "two", "three" };
        ArrayAdapter<String> sp_adapter = new ArrayAdapter<String>(this, R.layout.spinnertext, array);
        sp_adapter.setDropDownViewResource
        (R.layout.spinner_selector);
        Spinner sp = (Spinner) findViewById(R.id.spinner1);
        sp.setAdapter(sp_adapter);
    }
}


Screen shot 1. (ToggleButton is ON)



Screen shot 2. (ToggleButton is OFF)



Thank You