Android资源 - 为Android项目提供不同布局或字符串的框架。
我的 Android 应用程序无法识别 R.string 资源 - 可能是什么原因?
我通过教科书上的示例应用程序学习Android。在给定的示例源中,R.string.something 被识别: 然而,在我自己的 EXACT 源代码中,无法识别相同的 R.strings - 突出显示为
使用带有参数的字符串资源(strings.xml)时出现问题
我使用带参数的字符串,如下所示: 我的 Android 设备已在应用程序中达到 %1$s 积分:https://play.google.com/store/apps/details?id=%2$s 我使用带参数的字符串,如下所示: <string name="share_1">My Android device has reached %1$s points in the app: https://play.google.com/store/apps/details?id=%2$s</string> String s = getString(R.string.share_1, result.getText().toString(), activity.getApplicationContext().getPackageName()); Lint 给我这个错误:“格式字符串不是有效的格式字符串,因此不应将其传递给 string.format” 我正在使用最新版本的 Android Studio、最新版本的 Gradle 和 compileSdkVersion 23 buildToolsVersion "23.0.3" 这只是 lint 错误。您可以在 gradle 中禁用 lint 错误 lintOptions { abortOnError false } 您应该使用 ContextCompat 来获取字符串并连接它。 您的字符串包含 String.format() 将尝试搜索和替换的参数。您的应用程序名称始终相同,并且不需要替换该 URL 参数。取出 URL 并单独格式化,然后将两者连接起来: XML: <string name="share_1">My Android device has reached %1$s points in the app:</string> Java: String myAppUrl = String.format("https://play.google.com/store/apps/details?id=%s", activity.getApplicationContext().getPackageName()); String score = getString(R.string.share_1, result.getText().toString()) String toBeDisplayed = String.format("%s %s", score, myAppUrl);
我有以下方法 fun formatMessages(indicators: IntArray): CharSequence { 返回 context.getString(R.string.foo, 指标) } 字符串是: $1%d -...
为什么以及如何在Android Studio中使用@xml/file_paths资源?
tl;dr:当我在运行时动态检索 file_path 时,为什么需要 file_paths 资源? 我目前正在通过构建自己的应用程序来学习 Android Studio。 我现在想做的是...
我在常用的 strings.xml 资源文件中定义了字符串,如下所示: 你好 是否可以定义如下格式字符串
我是 Jetpack Compose 的初学者。到目前为止,我一直在使用 Android-XML,并且有明确的最佳实践,例如代码放入 Java/Kotlin 文件夹中,所有资源放入资源文件夹中...
在我的 Android 应用程序中,我创建了文件 app/src/main/res/values/integers.xml: 在我的 Android 应用程序中,我创建了文件 app/src/main/res/values/integers.xml: <?xml version="1.0" encoding="utf-8"?> <resources> <integer name="server_port">8080</integer> </resources> 然后我就有了 public class MyApplication extends Application { final MyServer server = new MyServer(R.integer.server_port); } 但是,当应用程序启动时,日志语句显示该值(即 R.integer.server_port)为 2131296322。 为什么数值会出现乱码?这不是整数资源应该如何实现的吗? R.integer.server_port 给出整数的资源 ID,而不是整数本身。为了获得实际的整数,你必须做getResources().getInteger(R.integer.server_port)。但是,这需要对原始代码进行一些修改,因为在实例化 MyApplication 时尚未设置资源。相反,你可以这样做 public class MyApplication extends Application { MyServer server; @Override public void onCreate() { super.onCreate(); server = new MyServer(getResources().getInteger(R.integer.server_port)); } }
资源$NotFoundException - 资源 ID #<address>
我在许多不同的设备上面临着很多有关 Resoures$NotFoundException 的问题。我无法使用我的 Samsung A50(Android v11、One UI v3.1)和 Nexus 5(Android v...
参数计数错误,格式字符串resource_name需要3个,但格式调用提供2个Android字符串
我有一个html格式的资源,因为我想这样显示它 我有一个 html 格式的资源,因为我想这样显示它 <string name="calculator_bottom_sheet_body" translatable="false"> <![CDATA[<b>Basic requirements</b><br /><br /> You must be between 18 - 70 in order to proceed: <ul> <li> requirement 1</li> <li> requirement 2</li> <li> requirement 3 and</li> <li> requirement 4</li> </ul> <br /><br /> <b>Money requirement:</b><br /><br /> From €500 to €15.000<br /><br /> <b>Duration:</b><br /><br /> From 6 to 84 months<br /><br /> If you like to continue press the button below.]]> </string> 从片段中我检索字符串 val body = resources.getString(R.string.calculator_bottom_sheet_body) 效果很好。 但是我想要 €500、€15.000 的值给像 €%s、€%s 这样的变量。所以在我转换线之后 From €%s to €%s<br /><br /> 我需要从片段中调用资源,例如 val body = resources.getString(R.string.calculator_bottom_sheet_body, minAmount, maxAmount) 这就是我收到此错误的地方 Wrong argument count, format string calculator_bottom_sheet_body requires 1 but format call supplies 2 有人知道问题出在哪里吗?? 我认为你需要更新你的字符串 From €%s to €%s<br /><br /> 到 From €%1$s to €%2$s<br /><br /> 并像这样使用它 val body = String.format(context.getResources().getString(R.string.calculator_bottom_sheet_body), minAmount, maxAmount) 希望这有帮助。
连续多次调用getDrawable,drawable是否被缓存和优化?
简单的问题,我想标题已经说明了一切!我想知道是否可以多次调用同一个 getDrawable,或者我应该调用它一次并存储在惰性 val 中并重用它?
Android 和 Kotlin 可变参数:格式化字符串返回垃圾
我遇到了一个奇怪的问题:我有一个用于检索资源字符串的通用函数(只是为了避免每次都编写 context.resources.getString() ): 受保护的有趣字符串(@
如何将 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
在 Jetpack Compose 中使用 dp 和 sp 维度的最佳实践是什么?
我想了解如何更好地在 Compose 项目中使用 dp 和 sp 值。 我检查了几个开源 Compose 项目,其中大多数都对维度进行了硬编码。这就是定义...
所以我想获取多个区域设置中字符串的值,无论设备/应用程序的当前区域设置如何。我该怎么做呢? 基本上我需要的是一个函数 getString(int id, St...
我在我的Android项目中启用了shrinkResources true。当我在发布模式下运行应用程序时,它会抛出以下错误。 [行,列]处的解析错误:[1,1] 消息:内容不允许...
是否可以指定值目录中的文件中的字符串故意不翻译成其他语言? 我有一堆所有语言通用的字符串......
Android 应用程序因 ResourceNotFoundException 崩溃
我最近检查了 GP 崩溃日志,并且非常频繁地收到此调用堆栈。请你帮助我好吗。 一些东西: 添加资产路径失败有时会显示/data/app/com.xxx.xx...
Android Studio 会自动导入 fake.`package`.name.`for`.sync.R`。如何纠正?
我创建了一个带有片段视图和 ViewModel 的新模块。每次通过视图绑定或 getString() 引用视图或资源属性时,它都会奇怪地自动导入 fake.package.name.for.syn...
如何避免在 Android 设备中低于特定高度的不可滚动布局中截断视图
我有一个无法滚动的约束布局,所有视图都必须始终可见。我遇到的问题是,对于高度为 1920 或更低的设备,UI 会变得非常拥挤,并且有些......
E/iardini.error0:无效 ID 0x00000001 - 错误资源 ID
我目前遇到一个错误,该错误继续降低我的应用程序的性能。 该错误不会导致应用程序关闭或崩溃,也不会导致向控制台写入异常。 ...