0

我决定使用 Drawables 创建 ImageButton 的外观。那些 Drawable 不是原始的,所以我必须在代码中创建它们。自定义 Drawable 实现的简化版本如下。

现在我无法让它变得可见,所以我预计会有一些愚蠢的新手错误。

public class PlayButtonDrawable extends Drawable {

    private Drawable _defaultLook;

    public PlayButtonDrawable() {

        _defaultLook = createDefaultLook();
    }

    @Override
    public void draw(Canvas canvas) {
        _defaultLook.draw(canvas);
    }

    @Override
    public int getOpacity() {
        return PixelFormat.TRANSPARENT;
    }

    @Override
    public void setAlpha(int alpha) {
    }

    @Override
    public void setColorFilter(ColorFilter cf) {
    }

    private Drawable createDefaultLook() {
        GradientDrawable oval = new GradientDrawable(Orientation.BOTTOM_TOP, 
                new int[]{0xCDFFFFFF, 0xCDCCCCCC});
        oval.setGradientType(GradientDrawable.RADIAL_GRADIENT);
        oval.setShape(GradientDrawable.OVAL);
        oval.setBounds(0, 0, 100, 100);
        oval.setStroke(4, 0xFF4CFF00);
        oval.setGradientRadius(100);
        oval.setGradientCenter(25, 25);

        return oval;
    }
}

这个 PlayButtonDrawable 被添加到 onCreate 中的一个活动中。

_playButton = (ImageButton)findViewById(R.id.playButton);
_playButton.setImageDrawable(new PlayButtonDrawable());
_playButton.setOnClickListener(_playButtonClickListener);
_playButton.invalidate();
4

1 回答 1

1

您是如何在布局文件中设置 ImageButton(R.id.playButton) 的?重要的值是 layout_width 和 layout_height 参数。例如:

<ImageButton
      android:id="@+id/playButton"                    
      android:layout_width="100dp"
      android:layout_height="100dp"
 />

如果您将 layout_width 和 layout_height 设置为“wrap_content”,您只会看到一些像素。

于 2013-03-05T10:20:52.480 回答