#android #xml #drawable
#Android #xml #drawable
Вопрос:
В основном XML-файле activity моего приложения у меня есть макет с некоторым представлением изображения:
<LinearLayout
..>
<ImageView
.../>
<ImageView
..."/>
</LinearLayout>
Пока проблем нет. Отдельно я определяю blob.xml это просто большая белая точка.
blob.xml:
<?xml version="1.0" encoding="utf-8"?>
<shape
xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval">
<solid android:color="#ff0000"/>
<size android:width="32dp" android:height="32dp"/>
</shape>
Конечно, я могу поместить большой двоичный объект «в» изображение, подобное этому:
<LinearLayout
..>
<ImageView
.../>
<ImageView
..."/>
<ImageView
android:src="@drawable/blob"
.../>
</LinearLayout>
Это все фантастика. Я больше никогда не буду разрабатывать для iOS! Но есть ли способ просто напрямую поместить «shape» внутри XML-макета? Итак, что-то вроде..
<LinearLayout
..>
<ImageView
.../>
<ImageView
..."/>
<shape
xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval">
<solid android:color="#ff0000"/>
<size android:width="32dp" android:height="32dp"/>
</shape>
</LinearLayout>
или, возможно…
<LinearLayout
..>
<ImageView
.../>
<ImageView
..."/>
<ImageView
android:src={
<shape
xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval">
<solid android:color="#ff0000"/>
<size android:width="32dp" android:height="32dp"/>
</shape>
}
>
</LinearLayout>
Или что-то в этом роде!
Опять же, по сути, «не используя отдельный чертеж / файл»
Возможно ли это? Извините, трудно найти это как таковое, задокументированное в Android.
Ответ №1:
Нет, невозможно определить встроенный чертеж (пока)
В любом случае, если вы чувствуете себя мазохистом, вы можете создать drawable на Java, а затем назначить его своему представлению.
Но это, на мой взгляд, было бы излишним.
Я использую эту технику только при принудительном использовании.
Далее (если вы действительно чувствуете себя развратно 😉), есть еще один метод, который заключается в создании пользовательского представления и переопределении метода onDraw, чтобы полностью нарисовать его самостоятельно.
Я использую эту технику, только если мне нужно создать что-то действительно новое (т. Е. Какой-То вид, недоступный среди стандартных), например, вращающуюся ручку или датчик или что-то еще.
Своего рода боль, но она дает свои результаты.
Комментарии:
1. Согласен, это невозможно, вы бы просто ссылались на рисуемый файл как на внешний ресурс.
2. Великолепно. Спасибо, ребята! Чтобы быть абсолютно ясным, вы не можете поместить ‘
3. что касается «переопределения onDraw». это то, что мы должны делать каждый раз в iOS .. чтобы что-то делать 🙂
4. Я не завидую разработчикам iOS … 😉
5. Ну, у вас все еще есть возможность создавать вещи «а-ля iOS», когда все остальное не соответствует вашим потребностям 😉