Редактор макета студии Android показывает пользовательские свойства вида?

У меня сложный вид, состоящий из двух кнопок и одного текстового вида. Я хочу изменить свойства этих дочерних представлений в редакторе макетов Android Studio, но я не могу. Он показывает только основные свойства, но никаких свойств моего пользовательского представления.

Отображается ли в редакторе макетов Android Studio ограниченное количество свойств, заданных по умолчанию? Возможно ли отредактировать свойства моего пользовательского представления, без ручного редактирования файлов XML?

Custom View

Properties panel not showing custom view properties

Спасибо заранее!

Ответ 1

Как описано в http://developer.android.com/training/custom-views/create-view.html#customattr, вы должны добавить новый ressource (res/values ​​/attrs.xml).

<resources>
   <declare-styleable name="PieChart">
       <attr name="showText" format="boolean" />
       <attr name="labelPosition" format="enum">
           <enum name="left" value="0"/>
           <enum name="right" value="1"/>
       </attr>
   </declare-styleable>
</resources>

В вашем представлении вам нужно ссылаться на этот новый ressource

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
   xmlns:custom="http://schemas.android.com/apk/res/com.example.customviews">
     <com.example.customviews.charting.PieChart
         custom:showText="true"
         custom:labelPosition="left" />
</LinearLayout>

Теперь вы должны увидеть свойства в редакторе.

Ответ 2

изменить

xmlns:sidespinner="http://schemas.android.com/tools"

к

xmlns:sidespinner="http://schemas.android.com/apk/res-auto"

Android-студия покажет пользовательские атрибуты вашего пользовательского представления.

убедитесь, что вы определили пользовательские атрибуты в res/values/attrs.xml

Ответ 3

Если вы настроили View с настраиваемыми атрибутами, вам нужно использовать собственное пространство имен, чтобы установить свои пользовательские атрибуты.

Сначала, установите пространство имен в корневом представлении вашего макета следующим образом:

xmlns:sidespinner="http://schemas.android.com/apk/res-auto"

Поскольку имена пользовательских атрибутов объявлены в вашем res/values/attrs.xml вашего текущего проекта или проекта библиотеки, namespace sidespinner сообщит aapt для получения атрибутов из вашего текущего проекта или проекта библиотеки.

Второй, установите пользовательские атрибуты в пользовательском View следующим образом:

<your-custom-view
     sidespinner:boolean-attr="true"
     sidespinner:integer-attr="5"
     sidespinner:enum-attr="none"//your enum values
     sidespinner:dimen-attr="10dp" />

Надеюсь, вы поняли это. Если вы хотите узнать, как настроить атрибуты, обратитесь к ответу @SteffenTimm.