android-resources 相关问题

Android资源 - 为Android项目提供不同布局或字符串的框架。

Android 和 Kotlin 可变参数:格式化字符串返回垃圾

我遇到了一个奇怪的问题:我有一个用于检索资源字符串的通用函数(只是为了避免每次都编写 context.resources.getString() ): 受保护的有趣字符串(@

回答 1 投票 0

如何将 Alpha 通道添加到 xml 中现有的 Android 颜色

我在values/colors.xml中有以下颜色: #0F0E10 我想在渐变中引用这种颜色: 我的values/colors.xml中有以下颜色: <color name="grey_1">#0F0E10</color> 我想在渐变中引用这个颜色: <shape xmlns:android="http://schemas.android.com/apk/res/android"> <gradient android:type="linear" android:angle="-90" android:startColor="#000F0E10" android:endColor="#990F0E10"/> </shape> 但是,这会重复 RGB 颜色定义。理想情况下,我想写这样的东西: <shape xmlns:android="http://schemas.android.com/apk/res/android"> <gradient android:type="linear" android:angle="-90" android:startColor="alpha(00, @color/grey_1)" android:endColor="alpha(99, @color/grey_1)"/> </shape> 或者这个: <shape xmlns:android="http://schemas.android.com/apk/res/android"> <gradient android:type="linear" android:angle="-90" android:startColor="@color/grey_1" android:startTransparency="#00" android:endColor="@color/grey_1" android:endTransparency="#99"/> </shape> 这可能吗? 您可以在 API 23 及更高版本中使用 ColorStateList 来执行此操作。 来自文档: 从 API 23 开始,项目可以选择定义 android:alpha 属性来修改基色的不透明度。该属性需要一个 0 到 1 之间的浮点值或主题属性 如此解决。该项目的整体颜色由以下公式计算 将基色的 Alpha 通道乘以 Alpha 值。为了 例如,以下项目代表主题的强调色为 50% 不透明度: <item android:state_enabled="false" android:color="?android:attr/colorAccent" android:alpha="0.5" /> 因此,就我而言,我会这样做: color/gradient_start_color.xml: <item android:color="@color/grey_1" android:alpha="0" /> color/gradient_end_color.xml: <item android:color="@color/grey_1" android:alpha="0.6" /> drawable/gradient.xml: <shape xmlns:android="http://schemas.android.com/apk/res/android"> <gradient android:type="linear" android:angle="-90" android:startColor="@color/gradient_start_color" android:endColor="@color/gradient_end_color" /> </shape> 你必须用代码来完成。你可以得到这样的颜色, int color = getResources().getColor(R.color.<the color>); 你可以像这样把它变成ARGB: int a = Color.alpha(color); int r = Color.red(color); int g = Color.green(color); int b = Color.blue(color); 现在您可以使用您想要的任何 alpha 重新创建颜色: color = Color.argb(<new alpha>, r, g, b); 这当然意味着您需要从代码构建您的可绘制对象。不是那么干净,但可能。 您必须设置两种不同的颜色作为起始颜色和结束颜色。 请记住,颜色是这样定义的:#AARRGGBB 表示 Alpha、红色、绿色和蓝色。 应用程序启动后,资源处于只读模式。您无法以正确的方式以编程方式更改它们。 尝试使用 ColorUtils 包中的 androidx.core.graphics 类,例如; int color = getResources().getColor(R.color.border_active_default); circle.setFillColor(ColorUtils.setAlphaComponent(color,50)); 那么您就不必实现自己的自定义方法。 我还想指出,它可以通过编程方式完成 ColorStateList.withAlpha() 像这样: csl.withAlpha(0) //transparent csl.withAlpha(255) //opaque

回答 5 投票 0

在 Jetpack Compose 中使用 dp 和 sp 维度的最佳实践是什么?

我想了解如何更好地在 Compose 项目中使用 dp 和 sp 值。 我检查了几个开源 Compose 项目,其中大多数都对维度进行了硬编码。这就是定义...

回答 1 投票 0

如何从Android中的不同语言环境获取字符串?

所以我想获取多个区域设置中字符串的值,无论设备/应用程序的当前区域设置如何。我该怎么做呢? 基本上我需要的是一个函数 getString(int id, St...

回答 8 投票 0

查找在资源缩减期间导致问题的确切 xml 文件

我在我的Android项目中启用了shrinkResources true。当我在发布模式下运行应用程序时,它会抛出以下错误。 [行,列]处的解析错误:[1,1] 消息:内容不允许...

回答 1 投票 0

如何阻止 Android Lint 抱怨未翻译的字符串?

是否可以指定值目录中的文件中的字符串故意不翻译成其他语言? 我有一堆所有语言通用的字符串......

回答 11 投票 0

Android 应用程序因 ResourceNotFoundException 崩溃

我最近检查了 GP 崩溃日志,并且非常频繁地收到此调用堆栈。请你帮助我好吗。 一些东西: 添加资产路径失败有时会显示/data/app/com.xxx.xx...

回答 2 投票 0

Android Studio 会自动导入 fake.`package`.name.`for`.sync.R`。如何纠正?

我创建了一个带有片段视图和 ViewModel 的新模块。每次通过视图绑定或 getString() 引用视图或资源属性时,它都会奇怪地自动导入 fake.package.name.for.syn...

回答 1 投票 0

如何避免在 Android 设备中低于特定高度的不可滚动布局中截断视图

我有一个无法滚动的约束布局,所有视图都必须始终可见。我遇到的问题是,对于高度为 1920 或更低的设备,UI 会变得非常拥挤,并且有些......

回答 1 投票 0

E/iardini.error0:无效 ID 0x00000001 - 错误资源 ID

我目前遇到一个错误,该错误继续降低我的应用程序的性能。 该错误不会导致应用程序关闭或崩溃,也不会导致向控制台写入异常。 ...

回答 2 投票 0

Android,如何获取文件夹中所有文件的列表?

我需要 res/raw/ 目录中所有文件的名称(字符串)。 我试过: 文件 f = 新文件(“/”); String[] someFiles = f.list(); 看起来根目录就是android的根目录

回答 7 投票 0

可以用绳子获取颜色吗?

在我的值文件夹中,我有 my_colors.xml: #f6a02d #e3952a 在我的 values 文件夹中,我有 my_colors.xml: <resources> <!-- Orange --> <color name="orangePrimary">#f6a02d</color> <color name="orange1">#e3952a</color> <color name="orange2">#da8f28</color> <color name="orange3">#d08926</color> </resources> 有没有办法只用名称字符串来获取这些颜色? 像view.setBackgroundColor.getColor("orange1");之类的东西 对于图像,你有这个getResources().getIdentifier("my_image", "drawable", getPackageName()); 希望你们明白我的意思。 问候。 您是否尝试过以下操作: // java Resources res = context.getResources(); String packageName = context.getPackageName(); int colorId = res.getIdentifier("my_color", "color", packageName); int desiredColor = res.getColor(colorId); // kotlin val res: Resources = context.getResources() val packageName: String = context.getPackageName() val colorId: Int = res.getIdentifier("my_color", "color", packageName) val desiredColor: Int = res.getColor(colorId) 希望有帮助! 注意: 这已被弃用,相反,您可以执行以下操作,处理 Marshmallow 之前和之后(API 23): // java Resources res = context.getResources(); String packageName = context.getPackageName(); int colorId = res.getIdentifier("my_color", "color", packageName); int desiredColor = ContextCompat.getColor(context, colorId); // kotlin val res: Resources = context.getResources() val packageName: String = context.getPackageName() val colorId: Int = res.getIdentifier("my_color", "color", packageName) val desiredColor: Int = ContextCompat.getColor(context, colorId) 好吧,我现在使用反射按名称获取颜色,并在我这边工作了。 你需要写一个这样的函数。 public int getColorByName(String name) { int colorId = 0; try { Class res = R.color.class; Field field = res.getField(name); colorId = field.getInt(null); } catch (Exception e) { e.printStackTrace(); } return colorId; } 现在使用 获取资源 ID int resourceId = getColorByName("orange1"); 并且将可绘制对象设置为资源在您的ImageView中,如下所示。 imageView.setBackgroundResource(resourceId); 我尝试设置img.setBackgroundColor(resourceId),但设置了错误的颜色。 就你而言,我建议将颜色保留在你的res/values/arrays.xml中的类型化数组中,如下所示 <array name="colors"> <item>#FFFF0000</item> <item>#FF00FF00</item> <item>#FF0000FF</item> </array> 有关如何使用它,请参阅Typed Array的开发人员文档。 if you are using only R it might take material base Resource( com.google.android.material.R.color). so, you need to use below the code with your package name Resource(com.example.app.R.color) button.setBackgroundColor(context.resources.getColor(com.example.app.R.color.colorPrimary)) 从 Android 支持库 23 开始,ContextCompat 添加了新的 getColor() 方法。 所以,只需致电: ContextCompat.getColor(context, R.color.your_color); 另一个已弃用 getResources.getColor() 所以你需要实现上述内容。没有任何方法可以仅传递颜色名称来访问它。你必须从你的颜色文件中提供颜色ID。

回答 4 投票 0

如何使用mockk库模拟android上下文

我是 Android 上的 JUnit 测试新手,我正在测试一个函数,该函数使用 android 上下文对象来获取字符串资源并进行一些比较。我如何模拟 android 上下文对象

回答 2 投票 0

部分安卓设备找不到资源导致下载失败

我正在开发一个需要下载扩展文件的项目, 我已经按照使用 apk 上传扩展文件的所有步骤进行操作,并且它在某些 Android 设备(例如 android table)上运行良好...

回答 1 投票 0

从颜色选择器获取颜色时出现类型颜色错误的预期资源

我正在尝试从这样的选择器中获取颜色 我正在尝试从这样的选择器中获取颜色 <?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_checked="true" android:color="@color/white" /> <item android:state_checked="false" android:color="#80FFFFFF" /> </selector> 致电 ContextCompat.getColorStateList(context, R.drawable.bottom_navigation_colors_white) 但是它会产生 Expected resource of type color 错误,该错误突出显示为错误(以红色突出显示),但不会阻止编译。 这有什么问题吗? 根据 Android 开发人员文档,getColorStateList 需要一个颜色资源 ID。您正在传递一个可绘制资源 ID。 因此,您只需在 color 资源文件夹(而不是 drawable)下创建选择器。然后您将能够使用 R.color 而不是 R.drawable 来访问资源 ContextCompat.getColorStateList(context, R.color.bottom_navigation_colors_white)

回答 1 投票 0

如何在Android Jetpack Compose中使用字符串资源?

让我有以下 strings.xml 资源文件: 我的游乐场

回答 0 投票 0

如何以编程方式获取颜色属性的值

当我使用resolveAttribute()找出?attr/colorControlNormal的颜色值时,我得到236: TypedValue typedValue = new TypedValue(); getTheme().resolveAttribute(R.attr.colorControlNormal,

回答 4 投票 0

如何在合成图像中显示 RawRes?

这可能在某个地方有所涉及,但我无法在文档/上找到它,所以我决定问: 我试过这个: @可组合 有趣的原始图像( 修饰符:修饰符=修饰符, @RawRes

回答 1 投票 0

如何在图书馆引用图书馆的资源?

举个简单的例子。 Android Studio 项目有两个模块: 我的应用程序 我的图书馆 MyApp 是一个 Android 应用程序,而 MyLibrary 是 MyApp 使用的 Android 库。重要提示:MyLibrary 是一个模块 ...

回答 0 投票 0

如何从图标包加载图标

我想使用图标包中的图标。我知道如何找到已安装的图标包。但我无法找到如何从图标包加载图标。 查找图标包 - 作品 这就是我找到图标包的方式:

回答 3 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.