android得到颜色

时间:2011-05-18 09:46:30

标签: android android-layout

你好我有很多具有相同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 :(得分:0)

据我所知,您可以获取颜色值(例如:R.color.green),但您可以获得该按钮的可绘制对象。

button.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
            Drawable d = v.getBackground()
            }
        });

答案 1 :(得分:0)

我找到了这种方法,但我从未尝试过:

   int color = v.getSolidColor();

答案 2 :(得分:0)

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

with:

button1.setBackgroundRessource(R.color.color1x1);

下载这个项目,我创建了4个按钮,我得到了背景的颜色;),享受它

Get Color of Buttons

希望有所帮助