Android资源 - 为Android项目提供不同布局或字符串的框架。
我需要 res/raw/ 目录中所有文件的名称(字符串)。 我试过: 文件 f = 新文件(“/”); String[] someFiles = f.list(); 看起来根目录就是android的根目录
在我的值文件夹中,我有 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。
我是 Android 上的 JUnit 测试新手,我正在测试一个函数,该函数使用 android 上下文对象来获取字符串资源并进行一些比较。我如何模拟 android 上下文对象
我正在开发一个需要下载扩展文件的项目, 我已经按照使用 apk 上传扩展文件的所有步骤进行操作,并且它在某些 Android 设备(例如 android table)上运行良好...
我正在尝试从这样的选择器中获取颜色 我正在尝试从这样的选择器中获取颜色 <?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)
如何在Android Jetpack Compose中使用字符串资源?
让我有以下 strings.xml 资源文件: 我的游乐场
当我使用resolveAttribute()找出?attr/colorControlNormal的颜色值时,我得到236: TypedValue typedValue = new TypedValue(); getTheme().resolveAttribute(R.attr.colorControlNormal,
这可能在某个地方有所涉及,但我无法在文档/上找到它,所以我决定问: 我试过这个: @可组合 有趣的原始图像( 修饰符:修饰符=修饰符, @RawRes
举个简单的例子。 Android Studio 项目有两个模块: 我的应用程序 我的图书馆 MyApp 是一个 Android 应用程序,而 MyLibrary 是 MyApp 使用的 Android 库。重要提示:MyLibrary 是一个模块 ...
我想使用图标包中的图标。我知道如何找到已安装的图标包。但我无法找到如何从图标包加载图标。 查找图标包 - 作品 这就是我找到图标包的方式:
从 res 的 Drawable 中创建位图的有效方法(BitmapFactory 与类型转换)
从资源中的 Drawable 中创建 Bitmap 的哪种方法更有效? 位图 myBitmap = BitmapFactory.decodeResource(context.getResources(), R.
android 通过自己的决定而不是通过设备配置强制本地化资源选择
在我的例子中,应用程序将安装在单个设备上,不同的用户将使用它来登录和使用该应用程序,这里的问题是用户使用不同的语言,你可以说...
如何通过 R.attr.colorPrimary 访问主题颜色属性
我正在使用 Android Studio Electric Eel,我开始了一个新的“基本活动”项目。它带有明暗主题,/res/values/theme.xml /res/values-night/theme.xml 我正在使用 Android Studio Electric Eel,我开始了一个新的“基本活动”项目。它带有明暗主题,/res/values/theme.xml /res/values-night/theme.xml <resources xmlns:tools="http://schemas.android.com/tools"> <style name="Theme.Example" parent="Theme.MaterialComponents.DayNight.DarkActionBar"> <item name="colorPrimary">@color/md_theme_light_primary</item> </style> </resources> 我明白我需要使用这个代码: val typedValue = TypedValue() view.context.theme.resolveAttribute(R.attr.colorPrimary, typedValue, true) val colorPrimary = typedValue.data 这几乎行得通。 无论出于何种原因,R.attr.colorPrimary 都不会解决我本地项目的默认 com.example.project.R。当我输入R.attr.colorPrimary时,它只会自动完成解析为com.google.android.material.R.attr.colorPrimary(它也可以解析为一些androidx组件,这也有效) 当我使用它时,它确实有效,并且它确实使用了从我的 theme.xml 指向的我的 colors.xml。我只是想了解为什么它不会简单地从我的 theme.xml 中解析。在我在网上找到的所有示例中,它都被命名为 styles.xml,所以我将其重命名为那个,一切都一样,没有变化。 当我按住 ctrl 并单击已解析的颜色时,它会将我带到缓存文件中... ransformed ppcompat-1.6.1 es alues alues.xml 那是<attr format="color" name="colorPrimary"/> 如果我 ctrl-click parent="Theme.MaterialComponents.DayNight.DarkActionBar" 它会带我到一个缓存 ... ransformed\material-1.8.0 es 值 alues.xml 我只是想明白为什么。看来我的颜色仍然覆盖默认颜色,并且它可以使用com.google.android.material.R。在 xml 布局中,?attr/colorPrimary 工作得很好。但是我看的任何地方都没有说在以编程方式解决它时需要这条路径。 这几乎行得通。无论出于何种原因,R.attr.colorPrimary 都不会解析我本地项目的默认 com.example.project.R。 那是因为 colorPrimary 不是您在本地项目中定义的属性。这是材料库中定义的属性。 当我使用它时,它确实有效,并且它确实使用了从我的 theme.xml 指向的我的 colors.xml。我只是想了解为什么它不会简单地从我的 theme.xml 中解析。 属性不会“从 [your] theme.xml 解析”。属性在 attrs.xml 文件中定义,就像颜色或尺寸一样。你没有定义一个,因此它不存在。 当你在你的themes.xml文件中使用它时: <resources xmlns:tools="http://schemas.android.com/tools"> <style name="Theme.Example" parent="Theme.MaterialComponents.DayNight.DarkActionBar"> <item name="colorPrimary">@color/md_theme_light_primary</item> </style> </resources> 您正在 extending 现有的材料主题(parent 属性)并设置已在该主题中定义的 colorPrimary 属性。您没有声明自己的 colorPrimary 属性。如果您没有将 parent 属性设置为具有 colorPrimary 的主题,则会出现错误。 在我在网上找到的所有示例中,它都被命名为 styles.xml,所以我将其重命名为那个,一切都一样,没有变化。 对 - 文件名无关紧要。 当我按住 ctrl 并单击已解析的颜色时,它会将我带到缓存文件中... ransformed ppcompat-1.6.1 es alues alues.xml 那是 如果我 ctrl-click the parent="Theme.MaterialComponents.DayNight.DarkActionBar" 它会带我到缓存 ... ransformed\material-1.8.0 es 值 alues.xml 通过 XML 的 Android 主题是一个复杂的嵌套覆盖网络。 colorPrimary 作为第一个“app compat”库中的 Material design 引入的概念。此后,它通过专用材料库进行了更新和增强,这些材料库扩展了原始材料并重新定义了值以遵守最新的材料指南。 我只是想明白为什么。看来我的颜色仍然会覆盖默认颜色,并且它可以使用 com.google.android.material.R 工作。在 xml 布局中 ?attr/colorPrimary 工作得很好。但是我看的任何地方都没有说在以编程方式解决它时需要这条路径。 总而言之,colorPrimary 是由 appcompat 和材料设计库定义的主题属性,因此它存在于它们的包中。 在 XML 中,?attr/colorPrimary 引用当前主题,在您的情况下将是“Theme.Example”,您已声明将 colorPrimary 设置为 @color/md_theme_light_primary. 但是,在代码中,colorPrimary 只是一个常量,必须解决以澄清 which colorPrimary 您所指的是所有已定义的内容。最终,您使用哪个包来访问代码中的colorPrimary并不重要 - 它的value将解析为您在主题中设置的内容。
如何在主要活动android studio中实现一个循环xml
我正在创建一个交通灯应用程序。它非常简单,只是一个 TextView 和按钮。我希望 TextView 是圆形的,所以我在 drawable 中创建了一个名为 circular 和 s 的资源文件...
Jetpack Compose:在 ComposeView 中找不到资源
我正在使用 ComposeView 在片段中创建 ComposeView,如下所示: 覆盖乐趣 onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { 返回
我可以访问 TextView 实例,获取它的资源 ID 并通过 getResources().getResourceEntryName() 获取它的资源名称,但我似乎无法找到一种方法来获取相关字符串的 ID ...
我在应用程序支持的地方完成了我的应用程序本地化 en, en-AU, en-CA, en-TH, en-US 应用程序有一个存在于默认、en-AU、en-TH strings.xml 文件中的字符串。现在,当使用 locale US 的用户运行 th...
在我的 Java 类中,我想使用 strings.xml 中的字符串资源。 为此,我想使用这样的东西: getString(R.string.address) 如果我的课是一项活动,那么它就是有效的。 但是怎么可能...
使用片段时如何从主 Activity 类的资源文件中获取值?
我正在开发一个带有片段的应用程序,我想在 MainActivity.kt 中使用“strings.xml”中的值。这些是选项卡的名称。但是,如果我这样做: 私有变量标题:String = getTe ...
Android 资源链接失败,错误:解析覆盖 Android 失败
最近我在构建我的应用程序时遇到了这个错误。我没有修改上次成功构建的任何内容。 这是我得到的错误 Android 资源链接失败 C:\用户\华硕\.gradl