Создание внутреннего класса (предпочтения) в XML-файле - PullRequest
9 голосов
/ 30 августа 2011

Если вы хотите получить доступ к пользовательскому представлению в каком-либо файле layout.xml, у вас есть два варианта:

  1. Представление находится в своем собственном классе.Затем вы делаете <package.name.MyView android:layout_width= ... />
  2. Представление является внутренним классом: <view class="package.name.OuterClass$MyView" android:layout_width= ... />

Теперь я хочу сделать то же самое внутри <PreferenceScreen>. Первый способ работает хорошо, но я хотел бы объединить все пользовательские Preference классы в моей PreferenceActivity.Я пробовал <Preference class="package.name.OuterClass$MyPreference" ... /> (также с '.' Вместо '$') и <package.name.OuterClass.MyPreference ... />, но оба не удалось.

У кого-нибудь есть идея?

1 Ответ

2 голосов
/ 09 июля 2013

При работе с накачиванием Views, LayoutInflater ищет случай "view" -> "class":

View createViewFromTag(View parent, String name, AttributeSet attrs) {
    if (name.equals("view")) {
        name = attrs.getAttributeValue(null, "class");
    } ...

Предпочтения PreferenceInflater нет, так что для случая "класса".

Он использует отражение в своем методе createItem(), и, вероятно, поэтому первый случай работает для вас.

...