Android получить цвет - PullRequest
0 голосов
/ 18 мая 2011

Здравствуйте, у меня много кнопок с тем же OnClickListener, кнопки имеют разные цвета, как я могу получить цвет (или ресурс цвета) нажатой кнопки?

Вот код, который я использую

// declare a OnClickListener that will execute different actions
        // depending on the view that was clicked
        View.OnClickListener colorButtonListener = new View.OnClickListener(){
            public void  onClick  (View  v){
                textarea_note.setBackgroundDrawable(v.getBackground());//set edit background the same of the button
                dialog.dismiss();
            }
        };

        Button button1 = (Button) dialog.findViewById(R.id.button1);
        Button button2 = (Button) dialog.findViewById(R.id.button2);
        Button button3 = (Button) dialog.findViewById(R.id.button3);
        Button button4 = (Button) dialog.findViewById(R.id.button4);
        Button button5 = (Button) dialog.findViewById(R.id.button5);
        Button button6 = (Button) dialog.findViewById(R.id.button6);
        Button button7 = (Button) dialog.findViewById(R.id.button7);
        Button button8 = (Button) dialog.findViewById(R.id.button8);
        Button button9 = (Button) dialog.findViewById(R.id.button9);


        /*for changing the colour when the user clicks on a button*/
        button1.setOnClickListener(colorButtonListener);
        button2.setOnClickListener(colorButtonListener);
        button3.setOnClickListener(colorButtonListener);
        button4.setOnClickListener(colorButtonListener);
        button5.setOnClickListener(colorButtonListener);
        button6.setOnClickListener(colorButtonListener);
        button7.setOnClickListener(colorButtonListener);
        button8.setOnClickListener(colorButtonListener);
        button9.setOnClickListener(colorButtonListener);


        /**for the round corner*/
        Resources res = this.getResources();
        button1.setBackgroundDrawable(this.Sd(res.getColor(R.color.color1x1)));
        button2.setBackgroundDrawable(this.Sd(res.getColor(R.color.color1x2)));
        button3.setBackgroundDrawable(this.Sd(res.getColor(R.color.color1x3)));
        button4.setBackgroundDrawable(this.Sd(res.getColor(R.color.color2x1)));
        button5.setBackgroundDrawable(this.Sd(res.getColor(R.color.color2x2)));
        button6.setBackgroundDrawable(this.Sd(res.getColor(R.color.color2x3)));
        button7.setBackgroundDrawable(this.Sd(res.getColor(R.color.color3x1)));
        button8.setBackgroundDrawable(this.Sd(res.getColor(R.color.color3x2)));
        button9.setBackgroundDrawable(this.Sd(res.getColor(R.color.color3x3)));



        //now that the dialog is set up, it's time to show it    
        dialog.show();

Ответы [ 3 ]

0 голосов
/ 18 мая 2011

Я нашел этот метод, но никогда не пробовал:

   int color = v.getSolidColor();
0 голосов
/ 18 мая 2011
TextView txt = (TextView)findViewById(R.id.txtColor);
txt.setText("Color Of Button ");
View.OnClickListener colorButtonListener = new View.OnClickListener(){
        public void  onClick  (View  v){
            txt.setTextColor(v.getSolidColor());
            textarea_note.setBackgroundDrawable(v.getBackground());//set edit background the same of the button
            dialog.dismiss();
            Log.i("Color of Button","Color = "+v.getSolidColor() );
        }
    };

Примечание: перейдите по этой ссылке: getSolidColor ()

в вашем коде, попробуйте заменить:

button1.setBackgroundDrawable(this.Sd(res.getColor(R.color.color1x1)));

с:

button1.setBackgroundRessource(R.color.color1x1);

скачайте этот проект, я создал 4 кнопки, и я получу цвет фона;), наслаждайтесь им

Получить цвет кнопок

Надеюсь, это поможет

0 голосов
/ 18 мая 2011

Насколько я знаю, вы можете получить значения цвета (например, R.color.green), но вы можете получить нарисованный объект кнопки.

button.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
            Drawable d = v.getBackground()
            }
        });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...