2011-05-11 85 views
0

在我的应用我有这样的事情:设置可绘制背景(以编程方式)?

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

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

回答

1

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

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

让我知道是否有帮助。

+0

这并不容易...我有一个流媒体播放器有很多方法。下载歌曲时,进度条分别显示在同一行上一个,播放和下一个按钮被显示。但它看起来不太漂亮......当歌曲下载时,我想用进度条替换播放按钮。下载完成后,“播放”按钮将替换进度条。 – lomza 2011-05-11 14:31:52

+1

然后使用'setVisibility'将播放按钮的可见性设置为'GONE',并在播放时将ProgressBar显示为'VISIBLE';然后将播放按钮设置为“VISIBLE”,并在不播放时将ProgressBar设置为“GONE”。 – 2011-05-11 14:47:26

+1

啊,你正试图更换,而不是将其设置为背景。将进度条和播放按钮放在ViewSwitcher中(请参阅http://developer.android.com/reference/android/widget/ViewSwitcher.html),并将其放在现在播放按钮的位置。您可以根据需要从一个翻到另一个。 – Femi 2011-05-11 14:48:23

0

制作透明按钮(background =“@ null”)并使用RelativeLayout或FrameLayout将其放置在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> 

进行相同的代码,如果你想要的。

+0

听起来像很多工作。有一个简单的解决方案吗? – lomza 2011-05-11 14:27:47

+0

更新中...希望这会有所帮助,如何使这个简单的,不幸的是我不知道 – Flavio 2011-05-11 14:43:30

0

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

+0

Данет,уменяполноценныйплеер,безкнопочекникакнеобойтись=) – lomza 2011-05-11 18:42:38

+0

Дасделайтыобычнуюкрасивуюкнопкусостатическимбэкграундоминепарься: ) – Flavio 2011-05-12 07:04:31

+0

Такисделала。 Вопределенноевремядавалаvisibleдляодноиinvisibleдлядругого;) – lomza 2012-03-02 09:33:52

相关问题