繁体   English   中英

Android Button可绘制问题

[英]Android Button drawable issue

我正在尝试实现与操作栏中的图标类似的按钮,即,透明图像会在单击时更改背景颜色。

这些是我要满足的条件:

  1. 点击时背景颜色发生变化
  2. 中心包含一个小矩形
  3. 矩形可以通过程序更改颜色

我尝试使用Drawable表示矩形,然后将其设置为按钮的背景,但是它扩展到了按钮的边缘,因此单击时没有背景色发生变化(我可以使用drawable.setColorFilter ()和button.setBackground(drawable)更改其颜色)。 缩小按钮也会缩小触摸目标。

我使用也尝试StateListDrawable包含两个矩形形状,一个背景和内矩形,等等state_pressed矩形背景会改变颜色。 但是,前矩形再次拉伸并完全覆盖了背景矩形。

哪种方法可以达到我的条件? 谢谢。

有2张按钮状态的图像,并使用此图像:

        boolean clicked = false
        Button btn = (Buttton)findViewById(R.id.button);

        btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) 
            {
                if (clicked) 
                {
                    clicked = false;
                    btn.setBackgroundResource(R.drawable.button_image_on);
                }

                else
                {
                    clicked = true;
                    btn.setBackgroundResource(R.drawable.button_image_off);
                }
            }
        });

尼克·巴彻(Nick Butcher)和罗曼·努里克(Roman Nurik)在Google IO 2013上关于Android UI设计的演讲有助于解决该问题。

XML属性style="?android:borderlessButtonStyle"可以在ImageButton (或什至只是Button )上设置,以为其提供透明背景,并在触摸时以标准Holo蓝色点亮。 根据Roman Nurik的说法,此属性提供“全部免费”的标准样式。

我在layout.xml文件中创建了一个包含无边界按钮属性的ImageButton ,然后用Java创建了彩色的Drawable ,然后使用myImageButton.setImageDrawable(myColouredDrawable);将其放入按钮中myImageButton.setImageDrawable(myColouredDrawable); 符合我所有的三个条件。

2013年7月修改:要使用Jake Wharton的ActionBarSherlock将ActionBar模式带到旧版Android,请使用style="@style/Widget.Sherlock.ActionButton" ;如果使用ActionBarCompat支持库,请使用style="@style/Widget.AppCompat.ActionButton"

2017年5月更新:对于ImageViews(我相信它实际上是一个ImageViewCompat ),我开始在Jellybean上使用android:background="?android:attr/selectableItemBackground"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM