Search code examples
androidandroid-layouttextviewcolor-picker

Change text color and background color of textview using color picker in android


How to change text color and background color of TextView using color picker in android. To Add note which have functionality to change color of text and background choosing color form the color picker.

Note


Solution

    • download this project import it.Color-picker

    • right click on project ---> property ---> android --->Add Click and add download project.

    • Create new Project
    • layout Note : use the image of color picker from downloaded project res folder---> drawable

       <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
          xmlns:tools="http://schemas.android.com/tools"
          android:layout_width="match_parent"
          android:layout_height="match_parent"
          tools:context=".MainActivity" >
      
           <EditText
              android:id="@+id/txNote"
              android:layout_width="200dip"
              android:layout_height="200dip"
              android:layout_centerInParent="true"
              android:text="@string/hello_world" />
      
           <ImageView
               android:id="@+id/rightColorPicker"
               android:layout_width="@dimen/ambilwarna_hueWidth"
               android:layout_height="@dimen/ambilwarna_hsvHeight"
               android:layout_alignParentRight="true"
               android:layout_alignTop="@+id/txNote"
               android:scaleType="fitXY"
               android:src="@drawable/ambilwarna_hue" />
      
           <ImageView
               android:id="@+id/leftColorPicker"
               android:layout_width="@dimen/ambilwarna_hueWidth"
               android:layout_height="@dimen/ambilwarna_hsvHeight"
               android:layout_alignParentLeft="true"
               android:layout_alignTop="@+id/txNote"
               android:scaleType="fitXY"
               android:src="@drawable/ambilwarna_hue" />
      
      </RelativeLayout>
      
      • Activity

        public class MainActivity extends Activity implements OnTouchListener {
        
        TextView txtNote;
        ImageView rightColorPicker,leftColorPicker;
        private int mAppWidgetId = 0 ;
        public static boolean flag;
        
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            txtNote=(TextView)findViewById(R.id.txNote);
            rightColorPicker=(ImageView)findViewById(R.id.rightColorPicker);
            leftColorPicker=(ImageView)findViewById(R.id.leftColorPicker);
            rightColorPicker.setOnTouchListener(this);
            leftColorPicker.setOnTouchListener(this);
            Intent intent = getIntent();
            Bundle extras = intent.getExtras();
            if (extras != null) {
        
                mAppWidgetId = extras.getInt(
                        AppWidgetManager.EXTRA_APPWIDGET_ID, 
                        AppWidgetManager.INVALID_APPWIDGET_ID);
        
            }
        
        }
        
        @Override
        public boolean onTouch(View v, MotionEvent event) {
            switch (v.getId()) {
            case R.id.rightColorPicker:
                colorPicker();
                flag=true;
                break;
            case R.id.leftColorPicker:
                colorPicker();
                flag=false;
                break;
            default:
                break;
            }
        
            return false;
        }
        
        public void colorPicker() {
        
        //      initialColor is the initially-selected color to be shown in the rectangle on the left of the arrow.
        //      for example, 0xff000000 is black, 0xff0000ff is blue. Please be aware of the initial 0xff which is the alpha.
        ColorPickerDialog dialog = new ColorPickerDialog(this, 0xff0000ff, new OnAmbilWarnaListener() {
        
            // Executes, when user click Cancel button
            @Override
            public void onCancel(ColorPickerDialog dialog){
            }
        
            // Executes, when user click OK button
            @Override
            public void onOk(ColorPickerDialog dialog, int color) {
                // Create an Intent to launch WidgetConfigurationActivity screen
                Intent intent = new Intent(getBaseContext(), MainActivity.class);
        
                intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, mAppWidgetId);
        
                // This is needed to make this intent different from its previous intents 
                intent.setData(Uri.parse("tel:/"+ (int)System.currentTimeMillis()));
        
                // Creating a pending intent, which will be invoked when the user
                // clicks on the widget
                PendingIntent pendingIntent = PendingIntent.getActivity(getBaseContext(), 0, 
                        intent, PendingIntent.FLAG_UPDATE_CURRENT);                     
        
                // Getting an instance of WidgetManager
                AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(getBaseContext());
        
                if (flag) {
                     txtNote.setBackgroundColor(color);
        
                } else {
                    txtNote.setTextColor(color);
                }
        
        // // Instantiating the class RemoteViews with widget_layout
              RemoteViews views = new 
              RemoteViews(getBaseContext().getPackageName(), R.layout.activity_main);
        //  
        // // Setting the background color of the widget
              views.setInt(R.id.txNote, "setBackgroundColor", color);                        
        //                          
        // //  Attach an on-click listener to the clock
             views.setOnClickPendingIntent(R.id.txNote,pendingIntent);
        
                // Tell the AppWidgetManager to perform an update on the app widget
                appWidgetManager.updateAppWidget(mAppWidgetId, views);                        
        
                // Return RESULT_OK from this activity
                Intent resultValue = new Intent();
                resultValue.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, mAppWidgetId);
                setResult(RESULT_OK, resultValue);
                //finish();
            }
        });
        dialog.show();
        }
        }