我想要实现的是具有类似对话框的透明度的活动,其中RelativeLayout内容的可见性为100%。这是活动的xml:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginBottom="50dip"
android:layout_marginLeft="8dip"
android:layout_marginRight="8dip"
android:layout_marginTop="50dip">
(...)
</RelativeLayout>
</LinearLayout>
这很明显:
<activity
android:name="com.acentic.rcontrol.activities.MyActivity"
android:theme="@android:style/Theme.Translucent.NoTitleBar" >
</activity>
现在背景仍然可见,我做错了什么?
---编辑: 我添加了
android:background="#c0000000"
到LinearLayout。现在背景是我想要的透明,但RelativeLayout里面的TextViews也是透明的..如何改变它?
答案 0 :(得分:9)
尝试设置
getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
在您的活动中。
你也可以尝试一种风格:
<style name="AppTheme" parent="@android:style/Theme.Translucent.NoTitleBar">
<item name="android:windowBackground">@android:color/transparent</item>
<item name="android:colorBackgroundCacheHint">@null</item>
</style>
答案 1 :(得分:5)
在res/values/styles.xml
文件中添加以下样式(如果没有,请创建它。)这是一个完整的文件:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="Theme.Transparent" parent="android:Theme">
<item name="android:windowIsTranslucent">true</item>
<item name="android:windowBackground">@color/transparent</item>
<item name="android:windowContentOverlay">@null</item>
<item name="android:windowNoTitle">true</item>
<item name="android:windowIsFloating">true</item>
<item name="android:backgroundDimEnabled">false</item>
</style>
</resources>
(值@color/transparent
是我放入#00000000
文件的颜色值res/values/color.xml
。更高版本的Android为您定义了透明色,因此使用这些版本可以使用{ {1}}直接在样式中跳过color.xml步骤(注意定义中的附加@android:color/transparent
))
然后将样式应用于您的活动,例如:
android:
取自here。
答案 2 :(得分:5)
创建样式
<style name="MyTransparentTheme" parent="android:Theme.Dialog">
<item name="android:windowIsTranslucent">true</item>
<item name="android:windowBackground">@android:color/transparent</item>
<item name="android:windowContentOverlay">@null</item>
<item name="android:windowNoTitle">true</item>
<item name="android:windowIsFloating">true</item>
<item name="android:backgroundDimEnabled">false</item>
这是清单:
<activity
android:name="your package.activity"
android:theme="@style/MyTransparentTheme">
</activity>
答案 3 :(得分:3)
我添加了android:background =&#34;#c0000000&#34;到LinearLayout。现在背景 我想要透明,但内部也是TextViews RelativeLayout也是透明的..如何改变呢?
为RelativeLayout
元素添加纯色背景。
这样,RelativeLayout
将具有纯色背景,只有边距将是透明的。
答案 4 :(得分:1)
设置LinearLayout透明度后,尝试将其子透明度设置为所需的值。 这应该使它们具有与LinearLayout不同的透明度。试试吧。
答案 5 :(得分:0)
如果您的活动需要从AppCompatActivity扩展,则可以为您的活动创建自定义样式
<style name="transparentActivity" parent="Theme.AppCompat.NoActionBar">
<item name="android:windowNoTitle">true</item>
<item name="android:windowBackground">@android:color/transparent</item>
<item name="android:colorBackgroundCacheHint">@null</item>
<item name="android:windowIsTranslucent">true</item>
<item name="android:windowAnimationStyle">@android:style/Animation</item>
<item name="android:windowTranslucentStatus">true</item>
<item name="android:statusBarColor">@android:color/transparent</item>
</style>
然后在清单中更改活动的默认样式
<activity android:name=".MyActivity"
android:theme="@style/transparentActivity"/>
否则,如果不需要从AppCompatActivity扩展活动,只需以这种方式在清单中更改活动的主题。
<activity android:name=".MyActivity"
android:theme="@android:style/Theme.Translucent.NoTitleBar"/>