来自 strings.xml 的字符串在应用程序中可用但未被小部件使用
Strings from strings.xml available in application but not used by widgets
我一直在制作 Android 应用程序。 Android 如果我在布局编辑器中对字符串进行硬编码,Studio 会责备我,所以我将它们放在 res/values/strings.xml
中。举个简单的例子:
<resources>
<string name="thing">Do a thing</string>
</resources>
然后我将按钮的 text
属性 设置为 @string/thing
。正如预期的那样,这会在布局编辑器中正确显示 "Do a thing"。但是,当我使用默认的 运行 或 Android Studio 中的调试命令实际在我的 phone 上加载我的应用程序时,该按钮是空白的。这很有趣,因为当我手动调用 resources.getString(R.string.thing)
时,我确实得到了 "Do a thing"
。
我可以通过这种方式手动设置小部件的文本字段,方法如下:
findViewById<Button>(R.id.myButton).text = resources.getString(R.string.thing)
但据我所知,这是很多应该自动完成的工作。我在 Java 应用程序中也发生过这种情况,因此问题不是 Kotlin 特有的。我在 Linux 上使用 Android Studio 3.6,设备是装有 LineageOS 16 (Pie) 的 Redmi Note 3 Pro。
当应用程序在虚拟 AVD 中启动时,按钮也是空白的,很明显我一定是做错了什么。
Here are the full activity layout and string XML files.
您的每个 Button
小部件都有 tools:text
而不是 android:text
:
<Button
android:id="@+id/nextButton"
style="@style/Widget.AppCompat.Button.Borderless"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
tools:text="@string/nav_next" />
android:text
用于在运行时显示的固定文本,默认情况下,在开发工具中显示。
tools:text
仅用于开发工具中显示的示例文本。大多数情况下,您真正想要使用的文本在运行时才知道(例如,需要从数据库加载)。使用 tools:text
可以让您了解布局在工具中的真实外观,同时不会在您的应用程序运行时预先填充该文本。
因此,从 tools:text
切换到 android:text
,您应该会得到想要的结果。
我一直在制作 Android 应用程序。 Android 如果我在布局编辑器中对字符串进行硬编码,Studio 会责备我,所以我将它们放在 res/values/strings.xml
中。举个简单的例子:
<resources>
<string name="thing">Do a thing</string>
</resources>
然后我将按钮的 text
属性 设置为 @string/thing
。正如预期的那样,这会在布局编辑器中正确显示 "Do a thing"。但是,当我使用默认的 运行 或 Android Studio 中的调试命令实际在我的 phone 上加载我的应用程序时,该按钮是空白的。这很有趣,因为当我手动调用 resources.getString(R.string.thing)
时,我确实得到了 "Do a thing"
。
我可以通过这种方式手动设置小部件的文本字段,方法如下:
findViewById<Button>(R.id.myButton).text = resources.getString(R.string.thing)
但据我所知,这是很多应该自动完成的工作。我在 Java 应用程序中也发生过这种情况,因此问题不是 Kotlin 特有的。我在 Linux 上使用 Android Studio 3.6,设备是装有 LineageOS 16 (Pie) 的 Redmi Note 3 Pro。 当应用程序在虚拟 AVD 中启动时,按钮也是空白的,很明显我一定是做错了什么。 Here are the full activity layout and string XML files.
您的每个 Button
小部件都有 tools:text
而不是 android:text
:
<Button
android:id="@+id/nextButton"
style="@style/Widget.AppCompat.Button.Borderless"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
tools:text="@string/nav_next" />
android:text
用于在运行时显示的固定文本,默认情况下,在开发工具中显示。
tools:text
仅用于开发工具中显示的示例文本。大多数情况下,您真正想要使用的文本在运行时才知道(例如,需要从数据库加载)。使用 tools:text
可以让您了解布局在工具中的真实外观,同时不会在您的应用程序运行时预先填充该文本。
因此,从 tools:text
切换到 android:text
,您应该会得到想要的结果。