StateListDrawable在以编程方式创建的按钮上不起作用

时间:2019-07-15 12:21:33

标签: android android-button statelistdrawable

我已经测试过this答案,但是它对我不起作用。

我通过以下方式创建stateListDrawable:

stateListDrawable=new StateListDrawable();
    final int[] colors = {Color.parseColor(evento.getColor()),Color.parseColor(evento.getBgColor())};
    final GradientDrawable gd = new GradientDrawable(
            GradientDrawable.Orientation.TOP_BOTTOM, colors);

    gd.setCornerRadius(30f);
    final GradientDrawable gd2 = new GradientDrawable(
            GradientDrawable.Orientation.BOTTOM_TOP, colors);
    gd2.setCornerRadius(30f);
    stateListDrawable.addState(StateSet.WILD_CARD,gd);
    //stateListDrawable.addState(new int[] {android.R.attr.state_enabled},gd);
    stateListDrawable.addState(new int[] {android.R.attr.state_pressed},gd2);

我试图更改addState语句中的顺序,将按下状态置于启用和通配符之前,但是无论如何放置,都不会绘制按下状态。

按钮的添加方式如下:

final Button btn = new Button(this);
                    btn.setText(array.get(i));
                    btn.setTextSize(10);
                    btn.setTextColor(getColor(R.color.white));
                    btn.setOnClickListener(new View.OnClickListener() {
                        @Override
                        public void onClick(View v) {
                            goToModule(texto);
                        }
                    });
                    btn.setHeight(height);
                    btn.setWidth(width);
                    btn.setOnTouchListener(parentListener);
                    btn.post(new Runnable() {
                        @Override
                        public void run() {
                            btn.setCompoundDrawablesWithIntrinsicBounds(null,getDrawableForText(texto),null, null);
                            //btn.setCompoundDrawablePadding(50);
                            btn.setPadding(0,35,0,0);
                            //btn.setBackground(gd);
                            btn.setBackground(stateListDrawable);
                            btn.setLayoutParams(params);
                        }
                    });

                    row1.addView(btn);

如果我的按钮被按下,如何获得更改状态的信息?

0 个答案:

没有答案