2011-05-23 45 views
5

我有一个简单的活动,我想有一个圆角的矩形形状。该活动使用半透明Drawable。我已经看到其他开发人员弹出的窗口是半透明的(不是对话框主题)圆角,我试图复制它。任何帮助,将不胜感激。如何添加圆角到活动的半透明背景?

这是我目前在屏幕中间产生矩形半透明窗口的代码。

<style name="Theme.TranslucentDialog"> 
    <item name="android:colorBackgroundCacheHint">@null</item> 
    <item name="android:windowIsTranslucent">true</item> 
    <!-- Note that we use the base animation style here (that is no 
     animations) because we really have no idea how this kind of 
     activity will be used. --> 
    <item name="android:windowBackground">@drawable/translucent_background</item> 
    <item name="android:windowNoTitle">true</item> 
    <item name="android:colorForeground">#fff</item> 
    <item name="android:windowIsFloating">true</item> 
    <item name="android:backgroundDimEnabled">false</item> 
    <item name="android:windowAnimationStyle">@android:style/Animation.Translucent</item> 
</style> 

<drawable name="translucent_background">#60000000</drawable> 

回答

8

我无法通过在代码中生成自定义形状来做到这一点。我必须通过创建我自己的9-Patch png文件来实现这一点。这里是我创造的最终主题:

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <style name="Theme" parent="android:Theme"> 
    </style> 

    <style name="Theme.TranslucentDialog"> 
     <item name="android:colorBackgroundCacheHint">@null</item> 
     <item name="android:windowIsTranslucent">true</item> 
     <item name="android:windowNoTitle">true</item> 
     <item name="android:colorForeground">#ffffff</item> 
     <item name="android:windowIsFloating">true</item> 
     <item name="android:backgroundDimEnabled">false</item> 
     <item name="android:windowAnimationStyle">@android:style/Animation.Translucent</item> 
     <item name="android:windowBackground">@drawable/notification_panel</item> 
    </style> 

</resources> 

请注意行:

<item name="android:windowBackground">@drawable/notification_panel</item> 

这是设置活动到我创建的9补丁图像背景中的线。此图像可以是任何东西,图像,9贴片或自定义形状。我使用了一个9贴片,这样我就可以拥有一个漂亮的边框和圆角,同时保留一个非常半透明的活动窗口(显示它后面的所有内容,但在活动窗口所在的位置留下灰色的好色)。

9-patch notification_panel.9.png位于我的可绘制文件夹中。起初我有点害怕创建我自己的9补丁图像,但事实证明,通过使用Inkscape和android draw9patch.bat实用程序,我能够做到这一点,并取得令人满意的结果。

让我知道如果任何人有任何问题。

+2

你能分享9路径图像文件吗? – Derzu 2012-07-26 04:41:34

+0

我不知道如何将png文件附加到帖子:(如果你谷歌周围的“Android 9补丁”我相信你可以找到例子。 – 2014-02-12 16:13:54

5

您需要制作自定义形状。下面是一个示例xml文件(带圆角的白色矩形):

<?xml version="1.0" encoding="utf-8"?> 
<shape 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:shape="rectangle"> 
    <gradient 
     android:startColor="#ffffff" 
     android:endColor="#ffffff"/> 
    <corners 
     android:radius="8dp"/> 
</shape> 
+0

你确定你可以用半透明的drawable来做到这一点吗? #60000000 2011-05-23 20:28:03

+0

只需用#60000000 – 2011-05-23 22:01:53

+0

替换'startColor'和'endColor'谢谢,我会试着让你知道它是如何实现的。 – 2011-05-25 11:41:22