gpt4 book ai didi

android - 透明 PopupWindow 布局中使用的样式背景不起作用

转载 作者:行者123 更新时间:2023-11-30 04:08:43 27 4
gpt4 key购买 nike

所以我有这个扩展 PopupWindow 的类。我将类(class)的背景设置为 @android:color/transparent 并为其内容使用以下布局:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/tips_root"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="8dip"
android:orientation="horizontal"
style="?Tips_Background" >

<TextView
android:id="@+id/textInfo"
android:layout_width="0dip"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="@string/register_termsandconditions"
style="?TextAppearance_Footer" />

<ImageButton
android:id="@+id/btnClose"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:padding="0dip"
android:layout_gravity="top|right"
android:src="@drawable/btn_dialog_normal"
style="@style/App_ImageButtonStyle" />

</LinearLayout>

我们的想法是得到一个像这样的弹出窗口:

My Custom Tips Window

我用来实现这个效果的样式如下:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:visible="false">

<gradient
android:startColor="@color/trademark_dark"
android:endColor="@color/trademark_darkest"
android:angle="90" />

<stroke android:width="2dp" android:color="#AAAAAA" />
<corners android:radius="10dp" />

<padding
android:left="8dp"
android:top="8dp"
android:right="8dp"
android:bottom="8dp" />

</shape>

一切都按预期进行,除了在我的启动 Activity 中,窗口看起来完全透明,就好像背景根本没有影响一样。

My Transparent Tips Window

我将包含此样式的主题应用于整个应用程序,使用:

<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/NI_AppTheme.Trademark"
android:name="NApplication">
<activity android:name="LoginActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
....

LoginActivity 是我遇到此问题的唯一 Activity 。我可能缺少什么?

更新:

@imran khan 概述的解决方案有效。但是,我需要通过主题属性而不是直接硬编码引用来引用此值,因为背景会因主题而异。我试过:

<style name="NI_AppTheme.Trademark">
<item name="Tips_Background">@drawable/application_tips_trademark</item>
</style>

然后设置布局的 android:background="?Tips_Background",但它使应用程序崩溃,堆栈跟踪如下:

 06-25 21:09:36.518: E/AndroidRuntime(874): Caused by: android.content.res.Resources$NotFoundException: Resource is not a Drawable (color or path): TypedValue{t=0x2/d=0x7f01002e a=-1}
06-25 21:09:36.518: E/AndroidRuntime(874): at android.content.res.Resources.loadDrawable(Resources.java:1897)
06-25 21:09:36.518: E/AndroidRuntime(874): at android.content.res.TypedArray.getDrawable(TypedArray.java:601)
06-25 21:09:36.518: E/AndroidRuntime(874): at android.view.View.<init>(View.java:2785)
06-25 21:09:36.518: E/AndroidRuntime(874): at android.view.ViewGroup.<init>(ViewGroup.java:385)
06-25 21:09:36.518: E/AndroidRuntime(874): at android.widget.LinearLayout.<init>(LinearLayout.java:174)
06-25 21:09:36.518: E/AndroidRuntime(874): at android.widget.LinearLayout.<init>(LinearLayout.java:170)

最佳答案

Activity 是唯一实际附加 list 中定义的主题的上下文。任何其他实例都将使用系统默认主题来扩充您的 View ,从而导致您可能没有预料到的显示输出。

Context, What Context?

这就是 getApplicationContext() 无法正确设置主题的原因。

关于android - 透明 PopupWindow 布局中使用的样式背景不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11189401/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com