设置背景drawable(以编程方式s)?

时间:2011-05-11 13:58:01

标签: android

在我的应用程序中,我有类似的东西:

Button playBtn = (Button) findViewById(R.id.play); ProgressBar pb1 = new ProgressBar(this); playBtn.setBackgroundDrawable(pb1);

但这不起作用。我知道为什么, - pb1不是一个可绘制的。但是,除此之外,我可以将播放按钮的背景设置为进度条?我使用编程方式创建进度条,我的.xml资源中有一个播放按钮。

3 个答案:

答案 0 :(得分:1)

啊,你真的不能做你想要做的事:没有办法使用一个View作为另一个View的背景。

你可以做的是类似于通知区域中的Android电池表所做的事情:制作一些可绘制的(我认为电池表使用5或6个不同的图像,1个用于充电过程的每个阶段)和然后使用计时器或外部事件切换按钮的背景可绘制:这模拟进度表。

如果有帮助,请告诉我。

答案 1 :(得分:0)

使用RelativeLayout或FrameLayout创建透明按钮(background =“@ null”)并将其放在ProgressBar上。

这比看起来简单:

 <FrameLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content">
    <ProgressBar
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />
    <Button
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" 
        android:layout_gravity="center"
        android:background="@null"
        android:textColor="@android:color/white"
        android:text="asdasd"/>
</FrameLayout>

如果需要,请在代码中使用相同的内容。

答案 2 :(得分:0)

您确定需要Button吗? Mb足以只放置ProgressBar并通过设置onClickListener使其可点击。