Мне нужно использовать одинаковые виджеты (кнопки, editext, textviews) с такими же свойствами, как ширина, высота, textColor, размер и т. Д. На нескольких экранах (xmls).Поэтому я создал стили для отдельных виджетов (один стиль для кнопки, другой для редактирования текста ...) и определил все эти стили в моей CustomTheme.
Моя проблема:
Если я определю макетwidth / height также в стилях и просто давая style = "@ style / myButtonStyle" для кнопки в xml, работает нормально, хотя я не упомянул width / height в xml (может быть, наследуется от Style).
Если я задаю ширину / высоту в xml без поддержки стилей и просто добавляю свою пользовательскую тему к действию, происходит перенос всех стилей, указанных в теме.Но я не упомянул ширину / высоту в xml, это вызывает исключение, говорящее о том, что вы указали ширину / высоту макета, которые я уже указал в самом стиле.
мой файл темы -
<style name="Theme.Blue" parent="android:Theme">
<item name="android:buttonStyle">@style/button222</item>
<item name="android:textViewStyle">@style/text222</item>
<item name="android:editTextStyle">@style/edittext222</item>
</style>
и мой стиль button222
<style name="button222" parent="@android:style/Widget.Button">
<item name="android:layout_width">@dimen/mWidth</item>
<item name="android:textColor">#F56266</item>
<item name="android:textSize">20sp</item>
</style>
, и я указал размер как
<dimen name="mWidth">180dip</dimen>
, и я использовал это в layout.xml
<Button android:layout_width="180dip"
android:layout_height="wrap_content"
android:text="This is large text."
/>
<Button
android:layout_height="wrap_content"
android:text="This is regular text one"
/>
<Button
style="@style/button222"
android:layout_height="wrap_content"
android:text="This is regular text."
/>
и он дает исключение, говоря «укажите ширину макета», который я упомянул в стиле button222 и пытаясь использовать в моей теме.