ImageButton没有背景,但触摸时变为蓝色

时间:2013-06-22 07:14:39

标签: java android

我添加了一个ImageButton(圆形灰色X的图像,透明背景)。它会动态添加到布局中。

final ImageButton btnx = new ImageButton(this);
    LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(
            50, 50);
    layoutParams.setMargins(14, 14, 14, 14);
    l5.addView(btnx, layoutParams);
    btnx.setImageResource(R.drawable.buttonx);

这里的问题是,在它下面,有一个灰色按钮。我知道如何隐藏它(使其透明或将我的图像设置为背景)但是当它变成淡蓝色时会产生很好的效果点击。 我如何才能使它仍然具有此效果但灰色按钮不显示在背景上? 或者是否还有其他方法可以使用透明背景从我的灰色X中制作一个按钮并使其在触摸时变为浅蓝色(如通常的按钮那样)并在未触摸/点击时恢复正常颜色?

另外:有没有人知道EditText的标准大小。我需要将这些X与同一行但在不同布局上的某些EditTexts对齐,如果不知道editTexts的确切大小,我就无法做到这一点。 。如果X的大小更小或更大,当我动态添加100行时,它将开始不对齐。

谢谢!

2 个答案:

答案 0 :(得分:0)

你应该使用选择器作为按钮状态:

final ImageButton btnx = new ImageButton(this);
    LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(
            50, 50);
    layoutParams.setMargins(14, 14, 14, 14);
    l5.addView(btnx, layoutParams);
    btnx.setImageResource(R.drawable.buttonx);

另外,将buttonx.xml添加到drawable文件夹中:

<?xml version="1.0" encoding="utf-8"?>
<selector
    xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:state_pressed="true" 
        android:drawable="@drawable/buttonx_pressed"/>
    <item android:drawable="@drawable/buttonx_normal"/>

</selector>

将正常和按下状态(“buttonx_pressed”和“buttonx_normal”)的图像也放入可绘制文件夹中。

答案 1 :(得分:0)

图像按钮是两个视图的组合,默认情况下为ImageView和Button。
当你触摸ImageButton时,ImageView保持静态,但默认的Button视图会改变它的状态。
所以要么将ImageButton的背景设置为null,要么将图像资源设置为imageButton的“src”或使用背景选择器。

另外如果您想要图像按钮不应该变为蓝色但应该给出按下的效果,为此你需要有一些图像按钮尺寸的图像
  - 一个完全透明的正常状态
  - 一个从中心透明但从边界半透明的点击效果。
然后将实际图像设置为背景,并使用这些帧图像制作选择器,并将其设置为ImageButton的src。

对于编辑文本,请拍摄移动屏幕的屏幕截图并进行测量。