Как установить ширину / высоту для любого виджета с помощью темы в Android

Мне нужно использовать те же виджеты (кнопки, editext, textviews) с такими же свойствами, как ширина, высота, textColor, размер и т. Д. На нескольких экранах (xmls). Поэтому я создал стили для отдельных виджетов (один стиль для кнопки, один для редактирования текста …), и я определил все эти стили в своей CustomTheme.

Моя проблема

Если я определяю ширину и высоту макета также в стилях и просто придавая стиль = «@ style / myButtonStyle» для кнопки в xml работает нормально, даже если я не упоминал ширину / высоту в xml (может наследовать от стиля).

Если я дам ширину / высоту в xml без поддержки стиля и просто придав моей пользовательской теме активности, я привожу все стили, заданные в теме. Но я не упоминал ширину / высоту в xml, он поднимает исключение, говоря, что u задает ширину / высоту макета, которую я уже указал в самом стиле.

Мой файл темы

<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, и пытаюсь использовать мою тему.

Solutions Collecting From Web of "Как установить ширину / высоту для любого виджета с помощью темы в Android"

Вы должны вставить значение размера в стиле xml:

 <dimen name="buttonHeight">40px</dimen> 

Тогда вам просто нужно указать значение измерения. Поэтому в вашем файле макета вы напишете:

 android:layout_height="@dimen/buttonHeight" 

Не знаете, какова ваша цель: важно ли вам не упоминать layout_width и layout_height в файле layout.xml, или вы просто ищете какой-либо способ использования значений из темы, не обращаясь к индивидуальному стилю?

В последнем случае решение будет

 layout_width="?attr/myCustomWidth" 

Где в вашем CustomTheme вы определили атрибут myCustomWidth .

Просто укажите стиль через тему приложения, и эта ошибка исчезнет. Сделайте это так:

 style="@style/Theme.blue"