【问题标题】:Custom text for spinner preview in Android graphical layout editorAndroid 图形布局编辑器中微调器预览的自定义文本
【发布时间】:2013-03-15 13:42:31
【问题描述】:

默认情况下,如果我在图形布局编辑器中创建Spinner(使用Spinner Item 预览布局,即android.R.layout.simple_spinner_item),则显示的文本为

项目 1

有什么办法可以改变这个预览文字吗?

【问题讨论】:

  • 在我看来它是空白的:S
  • 您是要在您的应用程序中、在此项目的 Eclipse 预览中还是在所有项目的 Eclipse 中更改它?
  • 我只想更改此组件的编辑器预览
  • 喜欢在 XML 中添加类似“tools:previewText='my content'”的内容
  • @StinePike 它可能取决于 ADT 插件版本(我的是 21.1.0)

标签: android graphical-layout-editor


【解决方案1】:

特别是对于微调器预览文本,将tools:listitem 属性与布局一起使用:

<Spinner
 android:id="@+id/spinner1"
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 tools:listitem="@android:layout/simple_list_item_1" />

您还可以在可视化编辑器中设置预览,方法是右键单击微调器,然后选择“预览微调器布局”。无论如何,它必须是一个具体的布局,而不是简单的文本字符串。

因此,最佳做法是在您将要使用的特定列表项布局中设置您的虚拟文本(例如,在 Java 代码中的 Adapter 中),然后如上所述直接预览该布局。

【讨论】:

  • 但我不知道如何告诉编辑器使用给定的Adapter 进行预览?
  • 您不能将适配器分配给 XML 中的 Spinner,而只能分配适配器用于返回每个项目视图的布局。如果您想自定义预览文本,则必须为此使用自定义布局。
  • 这整个tools:listitem 似乎在我的 AS 2.2.3 中的任何情况下都不起作用。谁能声称它仍然有效?
  • 不,自从我在 9 月第一次打开 AS 后,我就再也没有让它工作过
【解决方案2】:

首先,您需要创建一个适当的预览布局。 例如,您可以将其放在 layout/preview.xml 中:

<?xml version="1.0" encoding="utf-8"?>
<CheckedTextView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@android:id/text1"
    style="?android:attr/spinnerDropDownItemStyle"
    android:singleLine="true"
    android:layout_width="match_parent"
    android:layout_height="?android:attr/listPreferredItemHeight"
    android:text="NEW PREVIEW TEXT"
    android:ellipsize="marquee" />

然后您可以在实际布局中右键单击 Spinner 并选择 Preview Spinner Layout > Choose Layout... 从项目资源中选择您的布局,您应该会看到新的预览。

您还可以使用tools:listitem="@layout/preview" 以 XML 格式设置预览布局

【讨论】:

  • 但是如果我想在我的微调器中使用android.R.layout.simple_spinner_item 布局怎么办(我无法修改)
  • 顺便说一句,修改android:text 听起来不太好,因为它实际上修改了我的应用程序中的内容(我只想设置一个示例预览文本)
  • 这不会改变您的应用程序的内容。 tools:listitem 属性设置小部件的预览,而不是实际小部件的布局。一般来说,tools 命名空间表示开发者工具用来生成布局预览的东西,不会在实际应用中使用。
  • 好的,我明白了。但这意味着我的preview.xml 必须是我将在适配器中使用的实际布局的副本,对吗? (在我的情况下,我应该使用一组文本创建 android.R.layout.simple_spinner_item 的副本?)
  • 好的。我希望有一个更好的解决方案,但它显然在编辑器中还不存在。无论如何谢谢
【解决方案3】:

视图有一个名为“isEditMode()”的函数,可用于更改项目在图形编辑器中的外观。这个 SO 可能会帮助你:

Custom Android Views in Eclipse Visual Editor

【讨论】:

  • 这是否意味着我应该创建自己的Spinner 子类?
  • 这可能是实现这一目标的最简单方法。让 spinner 的子类实现 isEditMode 代码块来设置项目文本。就个人而言,我通常只是接受它在预览中看起来有点不同,然后我在我的设备或模拟器上尝试它以验证文本在运行时是否正确。您是否有理由需要在设计时查看预览窗口中的文本?我可以看到它对于微调器的非文本布局是可取的,但在这种情况下,只有所选项目的文本内容会在运行时发生变化。
  • 我正在使用编辑器创建一个应用原型的kinf。基本上我需要构建空屏幕(没有或只有很少的代码)来展示应用程序的最终外观和一些假数据。
  • 但是我想在以后的实际实现中重用这些布局
  • 也许然后,您可以在子类中创建一个虚拟适配器,例如 stackoverflow.com/questions/8509488/…,然后当需要实现原型时,您可以转储用于 editMode 的虚拟子类并实现适配器实际获取真实数据。然后将新填充的适配器关联到 xml 中的基本微调器。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-02
相关资源
最近更新 更多