主题是应用于整个Android应用程序或Activity的样式,而不是单个View。将样式应用为主题时,“活动”或“应用程序”中的每个“视图”都将应用它支持的每个样式属性。
我的应用程序中有一个主题,如下所示: //深色模式使用浅色 私人 val ConceptualSystemsDarkColorScheme = darkColorScheme( 主要 = 淡黄色, 次要 = YellowishBright,
我刚刚在一个新的 Android 项目上设置了 Edge2Edge 模式。一般来说,这工作得很好,但是在应用程序启动时,有一个值得注意的时刻,状态栏根本不可见。 状态栏显示...
使用 Kotlin 以编程方式更改 Android Studio 应用主题
我正在使用 Kotlin 制作 Android 应用程序。它包含应用程序主题颜色列表,以便用户可以从中选择一种颜色,然后我将该颜色保存在共享首选项中。 我已经完成了所有共享
我想将主题添加到我的应用程序中。为此,我添加了颜色选择器对话框。 当用户从应用程序的颜色选择器主题中选择颜色时应该更改,我想更改颜色...
获取Android系统强调色(Android 10系统强调色)
这个问题应该很简单,但我没有找到答案。我有一个带有可选口音的应用程序,我正在尝试添加一个选项来使用 android 系统口音(像 Lawnchair 这样的应用程序有这样一个
Material3 主题生成器 - 无法从预览中获取所有颜色
所以我尝试使用以下链接为应用程序构建主题: https://m3.material.io/theme-builder#/custom 但我无法弄清楚容器的以下颜色: 没有在任何地方列出...
在我的应用程序中,我有单个活动和所有其他片段 我正在从 style.xml 设置活动背景,如下所示 @color/very_light_gray 在我的应用程序中,我有单个活动和所有其他片段 我正在从 style.xml 设置活动背景,如下所示 <item name="android:windowBackground">@color/very_light_gray</item> 现在,对于一个特定的片段,我想将背景设置为透明,但我无法做到这一点,在片段中尝试的以下代码对我不起作用 @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // create ContextThemeWrapper from the original Activity Context with the custom theme final Context contextThemeWrapper = new ContextThemeWrapper(getActivity(), R.style.yourCustomTheme); // clone the inflater using the ContextThemeWrapper LayoutInflater localInflater = inflater.cloneInContext(contextThemeWrapper); // inflate the layout using the cloned inflater, not default inflater return localInflater.inflate(R.layout.yourLayout, container, false); } 知道怎么做吗? 这不是完美的解决方案,但它有效 不要使用 Fragment,而是使用 DialogFragment //exploreCategory is argument class MyFragment(val exploreCategory: ExploreCategory) : DialogFragment() { override fun onStart() { super.onStart() setWindowParams() } private fun setWindowParams(){ dialog?.window?.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT)) dialog?.window?.setLayout( LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT ) } } 剩余代码与您在片段中编写的代码相同 要在片段中显示使用下面的代码,如果在活动中显示则使用fragmentManager MyFragment(exploreCategory).show(childFragmentManager,null) //exploreCategory is argument, you can choose to send no arguments 创建回调并在 Acitvity 中实现它 interface OnFragmentDisplay{ onFragmentDisplay(); } 当此片段显示时将活动背景更新为透明..或在活动中将其设置为主题 请参阅 此链接 和 此 可能会有所帮助 你试过这个吗 fragment.getView().setBackgroundColor(Color.WHITE); 在样式应用程序中使用 null 作为颜色 <item name="android:windowBackground">null</item> 您的 Activity 容器布局背景应该是透明的。然后为Fragment的布局设置背景颜色。对于特定片段的布局,设置透明颜色以获得您所需的场景。 简单的方法是为该特定片段的根布局设置背景颜色,如下所示 android:background="@android:颜色/透明" 因此,假设您希望活动和片段对于特定片段是透明的(不太清楚这是否是您想要的问题,但我假设它是)..您需要设置“当“透明”片段附加到它时,“主机”活动背景变为透明。当任何其他片段附加到它时,您将需要重置活动背景,否则它将保持透明.. 有几种方法可以做到这一点,但我将选择“相当”简单的方法: 在你的透明片段中: @Override public void onStart() { super.onStart(); // I'm using null here because drawing nothing is faster than drawing transparent pixels. getActivity().getWindow().setBackgroundDrawable(null); getView().setBackground(null); } @Override public void onStop() { super.onStop(); getActivity().getWindow().setBackgroundDrawable(new ColorDrawable(@color/very_light_gray)); } 不完全确定这是否是您想要的效果。 祝你好运。 亲切的问候, 希杰 您必须将您的 Activity 也设置为透明。 android:background="@android:color/transparent" 由于您的 Activity 有 @color/very_light_gray,即使您将 Fragment 设置为 @android:color/transparent 也不起作用。 每个视图必须有透明背景以避免重叠。 在实例化片段时,您可以在活动中使用类似下面的代码。您可以使用自己的颜色来代替 Color.White。 fragment.getView().setBackgroundColor(Color.WHITE); 在代码中添加这一行 getActivity().getWindow().setBackgroundDrawableResource(R.drawable.my_drawable); 将活动布局的样式设置为 <style name="RootLayout" parent="AppTheme"> <item name="android:background">@drawable/app_transparent_background</item> </style> 并将其在 Activity 的父布局中设置为 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" style="@style/RootLayout" ...> 在其他要设置白色或其他彩色背景的片段中,在这些片段的主布局中设置不同的样式。 会起作用的 您刚刚在代码下面设置了布局片段的背景: <LinearLayout ... android:background="@android:color/transparent"/> 两步: 第一步 - 创建一个具有透明背景的视图(在 XML 文件中)。 在android studio中,找到“res”文件夹,右键单击它,new -> android resource file。比在出现的对话框中输入: File name:{这里放任何东西。例如 - “my_fragment”(不带引号)}请注意,只有小写字母、数字和下划线才可以 Resource type: 布局 Root element: LinearLayout(在您学会更好地了解 XML 布局之后,您可以在此处放置其他任何内容) Source set:主要 Directory name:布局。 在出现的窗口中切换到“文本”模式而不是“设计”(查找屏幕左下角的选项卡)。 而不是复制粘贴它而不是文件的内容(它非常相似,我们只是在此处添加“透明”背景): <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@android:color/transparent" > </LinearLayout> 第二步 - 在片段中膨胀此布局。 创建扩展 Fragment 的片段类并重写 onCreateView() 方法,在该方法内膨胀您的视图并返回它: public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) // assuming you named your xml file "my_fragment": // for other names replace R.layout.my_fragment with R.layout.put_your_name_here View view = inflater.inflate(R.layout.my_fragment, container, false); return view; } 当然,不要忘记在活动中创建片段的实例!
Jetpack Compose 使用自定义主题覆盖库中主题的部分内容
我正在努力为我们的应用程序创建一个库,旨在容纳所需的所有视图组件。该库还需要有一个自定义主题。特别是对于颜色和字体等...
Android MaterialTimePicker 自定义样式
我正在尝试将自定义样式应用于MaterialTimePicker。我仍然无法更改一些所需的颜色: 更改所选芯片的背景颜色 更改所选芯片文本颜色 雷莫...
我刚刚开始学习Android中的主题概念,但我在练习的应用程序中遇到了有线情况,我尝试通过设置主题编程来应用深色和浅色模式功能...
fontFamily 和 fontWeight 在 TextAppearance 中不起作用
我正在尝试在我的应用程序中添加多个字体系列。以下是添加“inter”字体的代码。 这是values/typography.xml ...
我的 Gridlayout 元素有问题,无法正确加载。 如果我的 Android 应用程序的主题与手机系统的主题不同,则元素不可见。 我有正常的网格布局...
我正在制作一个Android应用程序并正在考虑主题。 如果我没有为 Android 应用程序声明主题,将使用什么主题? 我在哪里可以找到这些信息? 评判标准是什么...
如何在Material Design android中自定义TimePicker?
我无法更改选择器颜色和时间选择器的其他部分。 到目前为止,我可以更改标题颜色和背景,但无法更改内圆和文本颜色。 改变客户...
如何在 Android Studio 中更改系统/底部导航栏按钮的点击波纹效果颜色
我想更改android studio中导航栏的触摸背景波纹效果颜色。 就像当有人按下或点击导航栏按钮时,会出现涟漪效应。但在我的...
Android - 使 Activity 全屏显示,状态栏位于其顶部
我想让我的活动全屏显示,顶部有状态栏,如下图所示: 我在活动标记内的清单中使用了此代码: 'android:theme="@style/Theme.AppCompat.Light.NoAction...
在我的项目上运行 Android Lint 时,我遇到了这个警告 可能的过度绘制:根元素使用 @drawable/main 绘制背景 也绘制背景的主题 从哪里推断...
Android 活动背景的边到边主题可在片段转换期间隐藏状态栏稀松布
我有 1 个活动在 navHostFragment 中托管多个片段。为了在它们之间切换,我使用 androids 导航组件(即 navGraph)。 现在我想启用边缘到边缘。我已经有了
在浅色模式下我没有任何问题,因为一切都是正确的,但在深色模式下,如果不进行任何更改,文本仍然是深色的。这是安卓的bug吗? 我尝试了各种方法,但我的问题是...
以编程方式更改 Android 11 (API 30) 中的状态栏文本颜色
我目前可以使用基本活动中的以下内容将状态栏文本颜色从浅色更新为深色: 私人乐趣toggleStatusBarTextColor(光:布尔值){ // 清除任何存在的...