Android Theme.Dialog 到光 AppCompatDialog

定制App主题

我用在我的 style.xml 作为主要应用程序主题

<style name="AppTheme" parent="Theme.AppCompat.Light">

并使用相同的所有 AlertDialogs 白色/蓝色的颜色。但我有活动,当 Dialog parent="android:Theme.Dialog" 和此框使用黑暗的主题。我要如何改变它对 AppCompat.Light 的主题?我试过 Theme.AppCompat.Light.Dialog ,但你知道它不会工作很好。谢谢你。

您可以使用此主题:

<style name="AppTheme" parent="android:Theme.DeviceDefault.Light.Dialog">

或者像这样:

<style name="AppBaseTheme" parent="@style/Theme.AppCompat.Light">
    <!-- API 14 theme customizations can go here. -->
</style>

 <style name="MyAppCompatDialogTheme" parent="AppBaseTheme">
    <item name="android:windowIsFloating">false</item>
    <item name="android:windowContentOverlay">@null</item>
    <item name="android:windowSoftInputMode">stateAlwaysHidden</item>
    <item name="android:windowActionModeOverlay">true</item>
    <item name="android:windowIsTranslucent">true</item>
</style>

 

转载于:https://www.cnblogs.com/zhujiabin/p/8991725.html

package com.adayo.aaop_deviceservice.dialog; import android.app.Dialog; import android.content.Context; import android.graphics.Color; import android.graphics.drawable.ColorDrawable; import android.util.DisplayMetrics; import android.view.Gravity; import android.view.View; import android.view.ViewGroup; import android.view.Window; import android.view.WindowManager; import androidx.annotation.NonNull; import androidx.appcompat.app.AppCompatDialog; import androidx.appcompat.view.ContextThemeWrapper; import com.adayo.aaop_deviceservice.R; import com.adayo.aaop_deviceservice.bean.ASyncEvent; import com.adayo.aaop_deviceservice.utils.LogUtils; import com.adayo.aaop_deviceservice.utils.MyAnalyticsManager; import com.ford.sync.fnvservice.analytics.FnvAnalyticsAttribute; import java.util.ArrayList; import java.util.List; /** * @ClassName: CpFailDialog * @Description: java类作用描述 * @Author: Y5874 * @CreateDate: 2025/3/31 16:30 */ public class DriveLimitDialog extends AppCompatDialog { private Context mContext; public DriveLimitDialog(@NonNull Context context, View.OnClickListener listener) { super(context, R.style.Theme_HS5105A_SystemUI_Dialog); mContext = context; initView(listener); } private void initView(View.OnClickListener listener) { Window window = getWindow(); if (window != null) { // window.setType(2054); window.setType(WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY); WindowManager.LayoutParams attributes = window.getAttributes(); window.setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT)); window.setDimAmount(1f); WindowManager wm = (WindowManager) mContext.getSystemService(Context.WINDOW_SERVICE); DisplayMetrics displayMetrics = new DisplayMetrics(); wm.getDefaultDisplay().getMetrics(displayMetrics); LogUtils.i("appstoremScreen", "主屏宽度: " + displayMetrics.widthPixels); attributes.gravity = Gravity.TOP | Gravity.START; attributes.width = 1000; attributes.height = displayMetrics.heightPixels; // attributes.height = ViewGroup.LayoutParams.WRAP_CONTENT; attributes.x = 600; attributes.y = 40; window.setAttributes(attributes); window.setContentView(R.layout.dialog_drive_limit); } this.setCanceledOnTouchOutside(false); findViewById(R.id.bt_close_app).setOnClickListener(listener); } @Override public void show() { super.show(); FnvAnalyticsAttribute fnvAnalyticsAttribute = new FnvAnalyticsAttribute(); fnvAnalyticsAttribute.key = "走行弹窗弹出"; fnvAnalyticsAttribute.value = "popup"; List<FnvAnalyticsAttribute> attributeList = new ArrayList<>(); attributeList.add(fnvAnalyticsAttribute); ASyncEvent aSyncEvent = new ASyncEvent("appstore", "msgpush", "onAppstoreMsgpush", "APPStore弹窗", attributeList); MyAnalyticsManager.getInstance(mContext).sendSyncEvent(aSyncEvent); } @Override public void dismiss() { super.dismiss(); } } 怎么使背景黑色遮罩只覆盖屏幕的一半,另一半不受影响
最新发布
08-30
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值