2011-05-23 40 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