Пользовательский текст для предварительного просмотра счетчика в графическом редакторе макетов Android

По умолчанию, если я создаю Spinner в графическом редакторе макета (используя макет предварительного просмотра Spinner Item, т.е. android.R.layout.simple_spinner_item), отображаемый текст

Пункт 1

Есть ли способ изменить этот текст предварительного просмотра?


person sdabet    schedule 15.03.2013    source источник
comment
в моем ide это пусто :S   -  person stinepike    schedule 15.03.2013
comment
Вы хотите изменить его в своем приложении, в предварительном просмотре Eclipse для этого проекта или во всех проектах Eclipse?   -  person Bryan Herbst    schedule 15.03.2013
comment
Я хотел бы изменить предварительный просмотр редактора только для этого компонента   -  person sdabet    schedule 15.03.2013
comment
например, добавить что-то вроде tools:previewText='my content' в XML   -  person sdabet    schedule 15.03.2013
comment
@StinePike это может зависеть от версии плагина ADT (у меня 21.1.0)   -  person sdabet    schedule 15.03.2013


Ответы (3)


В представлениях есть функция isEditMode(), которую можно использовать для изменения внешнего вида элементов в графическом редакторе. Этот SO может помочь вам:

Пользовательские представления Android в визуальном редакторе Eclipse

person frenziedherring    schedule 15.03.2013
comment
Означает ли это, что я должен создать свой собственный подкласс Spinner? - person sdabet; 15.03.2013
comment
Это может быть самый простой способ добиться этого. Пусть подкласс spinner реализует блок кода isEditMode для установки текста элемента. Лично я обычно просто соглашаюсь с тем, что в предварительном просмотре он выглядит немного иначе, и пробую его на своем устройстве или эмуляторе, чтобы убедиться, что текст правильный во время выполнения. Есть ли причина, по которой вам нужно видеть текст в окне предварительного просмотра во время разработки? Я вижу, что это желательно для нетекстовых макетов счетчика, но в этом случае во время выполнения изменится только текстовое содержимое выбранного элемента. - person frenziedherring; 15.03.2013
comment
Я использую редактор для создания прототипа приложения. По сути, мне нужно создать пустые экраны (без кода или с очень небольшим количеством кода), чтобы продемонстрировать окончательный вид приложения с некоторыми поддельными данными. - person sdabet; 15.03.2013
comment
Но я хочу повторно использовать эти макеты для фактической реализации позже. - person sdabet; 15.03.2013
comment
Возможно, тогда в подклассе вы могли бы создать фиктивный адаптер, а-ля stackoverflow.com/questions/8509488/, а затем, когда придет время реализовать прототип, вы можете сбросить фиктивный подкласс, используемый для режима редактирования, и реализовать адаптер для получения реальных данных. Затем свяжите только что заполненный адаптер с базовым счетчиком в xml. - person frenziedherring; 15.03.2013
comment
Как насчет того, чтобы просто загрузить его на устройство или эмулятор и сделать снимки экрана? Вы можете сделать это через DDMS в Eclipse довольно легко с помощью кнопки скриншота. - person frenziedherring; 15.03.2013
comment
Конечно, но было бы удобнее иметь мгновенный предварительный просмотр того, как ваш макет выглядит с реальными данными (в этом весь смысл графического редактора, верно?). В любом случае, идея вашего подкласса + фиктивного адаптера звучит неплохо :) - person sdabet; 15.03.2013
comment
давайте продолжим это обсуждение в чате - person frenziedherring; 15.03.2013

В частности, для текста предварительного просмотра счетчика используйте атрибут 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" />

Вы также можете установить этот предварительный просмотр в визуальном редакторе, щелкнув правой кнопкой мыши счетчик и выбрав «Предварительный просмотр макета счетчика». В любом случае, это должен быть конкретный макет, а не простая текстовая строка.

Таким образом, наилучшей практикой было бы установить ваши фиктивные тексты в определенном макете элемента списка, который вы собираетесь использовать в любом случае (например, в вашем Adapter в коде Java), а затем непосредственно просмотреть этот макет, как описано выше.

person saschoar    schedule 15.03.2013
comment
Но я не понимаю, как я могу сказать редактору использовать данный Adapter для предварительного просмотра? - person sdabet; 15.03.2013
comment
Вы не можете назначить адаптер счетчику в XML, а только макет, который адаптер использует для возврата каждого представления элемента. Вы должны использовать собственный макет для этого, если вы хотите настроить тексты предварительного просмотра. - person saschoar; 15.03.2013
comment
Вся эта штука tools:listitem не работает ни при каких обстоятельствах в моей AS 2.2.3. Кто-нибудь может утверждать, что он все еще работает? - person androidguy; 17.12.2016
comment
Нет, у меня так и не заработало с тех пор, как я впервые открыл AS в сентябре. - person androidguy; 06.03.2017

Сначала вам нужно создать соответствующий макет предварительного просмотра. Например, вы можете поместить это в 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 в своем фактическом макете и выбрать Предварительный просмотр макета Spinner > Выбрать макет... Выберите макет из ресурсов вашего проекта, и вы должны увидеть новый предварительный просмотр.

Вы также можете установить макет предварительного просмотра в XML с помощью tools:listitem="@layout/preview"

person Bryan Herbst    schedule 15.03.2013
comment
Но что, если я хочу использовать макет android.R.layout.simple_spinner_item со своим счетчиком (который я не могу изменить) - person sdabet; 15.03.2013
comment
Кстати, изменение android:text звучит не очень хорошо, поскольку оно фактически изменяет содержимое в моем приложении (и я хочу только установить образец текста предварительного просмотра) - person sdabet; 15.03.2013
comment
Это не изменяет содержимое вашего приложения. Атрибут tools:listitem устанавливает предварительный просмотр виджета, а не макет фактического виджета. Как правило, пространство имен tools указывает на то, что инструменты разработчика используют для создания предварительного просмотра макета, и не будет использоваться в реальном приложении. - person Bryan Herbst; 15.03.2013
comment
Да я вижу. Но это означает, что мой preview.xml должен быть дубликатом фактического макета, который я буду использовать в своем адаптере, верно? (в моем случае я должен создать копию android.R.layout.simple_spinner_item с заданным текстом?) - person sdabet; 15.03.2013
comment
Нет, вы можете использовать существующий макет в качестве макета предварительного просмотра. - person Bryan Herbst; 15.03.2013
comment
Но я не могу изменить android.R.layout.simple_spinner_item (который является частью SDK), чтобы установить образец текста внутри - person sdabet; 15.03.2013
comment
Ах я вижу. Да, в этом случае вам придется продублировать макет simple_spinner_item. - person Bryan Herbst; 15.03.2013
comment
Ok. Я надеялся, что будет лучшее решение, но его, очевидно, еще нет в редакторе. Спасибо в любом случае - person sdabet; 15.03.2013