Ответ 1
Хороший вопрос! Мне интересно то же самое. Наличие хорошего предварительного просмотра в редакторе макетов действительно очень сложно, и, похоже, это довольно небольшая документация о том, что вы можете, и вы не можете сделать, когда "isineditmode" истинно (например, анализировать пользовательские XML-атрибуты во входящем атрибутном наборе на конструкторе просмотров не работает, и т.д. и т.д.).
У меня даже проблемы с поиском мнений по ID в пользовательском представлении. Простая вещь вроде
mTextView = (TextView)myLayout.findViewById(R.id.view_id);
после раздувания моего настраиваемого макета представления возвращает значение null только при запуске макета из редактора (т.е. isineditmode() == true). При запуске приложения на телефоне он работает.
Я оставляю вас здесь, что помогло мне при попытке лучше просмотреть мои макеты в редакторе макетов:
1- Поиск представлений. Я использую свойство TAG, так как функция findViewWithTag() работает в режиме редактирования. Поэтому я использую Id для TAG
<TextView
android:id="@+id/myTextViewId"
android:layout_width="match_parent"
android:layout_height="wrap_content"
...
android:tag="mytextViewId" />
а затем найдите представления с помощью тега:
if(isineditmode()){
((TextView)myLayout.findViewWithTag("myTextViewId")).setText("Test text");
}
2- Проверка некоторых значений, чтобы знать, почему иногда мое настраиваемое представление не может быть создано в режиме редактирования или проверяется, могут ли какие-либо проверки быть запрошены в режиме редактирования и знать их значение. Я использую специальный текстовый вид в родительском макете, в котором будет размещен мой пользовательский вид, и я оставляю его скрытым и со специальным тегом:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
...
<com.example.myCustomView ... />
...
<TextView
android:id="@+id/DebugView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:tag="debug"
android:textSize="16sp"
android:textColor="#FFFFFF"
android:visibility="gone"
/>
</LinearLayout>
Этот линейный макет будет родителем моего пользовательского представления, и тот, который мне нужно открыть в редакторе макета, чтобы просмотреть мое пользовательское представление. "Debug" textview visibilty "ушел", поэтому я не буду беспокоить, если не нужно. Затем, когда мне нужно проверить что-то, я делаю следующее в java-коде своего пользовательского представления:
if(isineditmode()){
TextView wDebugView = (TextView)this.getRootView().findViewWithTag("debug");
wDebugView.setVisibility(View.VISIBLE);
wDebugView.setText(Integer.valueOf(getPaddingTop()).toString());
}
В этом примере я проверяю свойство представления, например верхнее дополнение.
Важное примечание: вам нужно вручную преобразовать в String значение, отображаемое в представлении "отладка", иначе оно сработает и даст вам ошибку.
Надеюсь, что это поможет.
И если у кого-то есть представление о том, почему поиск взглядов по id не работает, любая помощь будет оценена.