У меня есть приложение, которое требует, чтобы полосы прокрутки были включены в одной альбомной ориентации, но не в портретной ориентации. Я думал самый легкий способ сделать, это должно будет сделать атрибут, указывающий, включена ли полоса прокрутки или нет, такие как следующее:
<ScrollView
a:layout_width="fill_parent"
a:layout_height="fill_parent"
a:scrollbars="?my_activity_scrollbars"
a:fadingEdge="none"
>
Я затем определил бы отдельные значения атрибута для среды и режимов портрета. Казался легким.
Таким образом, я затем определил этот атрибут в attrs.xml:
<resources>
<declare-styleable name="Theme">
<attr name="my_activity_scrollbars" format="enum" />
</declare-styleable>
</resources>
И добавил его к styles.xml моего приложения:
<style name="MyApp" parent="@android:style/Theme.Light">
<item name="add_credit_card_scrollbars">none</item>
</style>
Однако, когда я пытаюсь скомпилировать свое приложение, я получаю следующую ошибку:
styles.xml:8: error: Error: String types not allowed (at 'my_activity_scrollbars' with value 'none').
Кажется ясным, что это не рассматривает "ни один" как строку, а не перечисляемое значение. Вместо того, чтобы не использовать "ни один", я попробовал вещи как"? android:attr/scrollbars/none", "? android:attr/none", и т.д., но они не работали.
Как я могу указать, что "ни один" не оценивает как перечисляемое значение вместо строки?
Я считаю, что у вас неправильно задано определение attr
:
Это перечисление attr из источника android:
<attr name="ellipsize">
<enum name="none" value="0" />
<enum name="start" value="1" />
<enum name="middle" value="2" />
<enum name="end" value="3" />
<enum name="marquee" value="4" />
</attr>
Похоже, вы не определяете format="enum"
и вместо этого указываете значения перечисления в самом теге attr
.