32

如果我有很多 TextViews 作为项目标签,我想我可以将它们的所有共同点提取到一个样式中,并且在布局中只使用

<TextView style="@style/label" android:text="Foo"/>
<TextView style="@style/label" android:text="Bar"/>

风格如下:

<style name="label">
    <item name="android:layout_width">wrap_content</item>
    <item name="android:layout_height">wrap_content</item>
</style>

但是当我这样做时,它在模拟器和设备上运行良好,但 Android XML 编辑器抱怨"<TextView>" does not set the required layout_height attribute. 它报告这个警告有什么原因吗?

4

5 回答 5

10

您是否尝试过清理项目?

我在一些 XML 文件的宽度和长度上也使用了相同的东西。这是在我的应用程序上运行的示例,您可以看一下:

<TextView
    android:id="@+id/viewdescription"
    android:textIsSelectable="true"
    android:layout_below="@+id/rating_bar_view"
    android:minLines="8"
    style="@style/description" />

和 XML:

<style name="description">
   <item name="android:layout_gravity">center_horizontal</item>
   <item name="android:inputType">textMultiLine</item>
   <item name="android:layout_width">fill_parent</item>
   <item name="android:layout_height">wrap_content</item>     
   <item name="android:textSize">14sp</item>
   <item name="android:textColor">@color/Black</item>
   <item name="android:layout_marginRight">8dp</item>
   <item name="android:layout_marginLeft">8dp</item>

于 2013-05-11T15:23:32.587 回答
4

老话题,但仍然:)

我不认为为样式设置宽度和高度是一个好主意。基本上它可以编译并且通常可以工作,但是我遇到了更复杂的布局、包含等导致问题的情况。当你考虑它时,把它放在那里没有任何意义。

如果您想为不同的布局设置不同的值,您可以轻松地使用 @dimen。对于使用你的风格的其他人来说,这也可能是相当令人惊讶的。您通常希望通过样式设置颜色、大小和行为,但大小不是其中之一。

你永远不知道你的风格会在什么背景下被使用。这只是这些难闻的东西之一,当你看到你开始觉得有些事情本可以做得更好。

于 2018-08-20T11:34:37.893 回答
3

尝试后Build > Clean Project,我在布局编辑器中仍然遇到同样的问题;完全重启我的 IDE 为我解决了这个问题。

于 2015-09-15T16:58:50.653 回答
0

我试过这个,它工作正常..

 <EditText
        android:id="@+id/edt_mobile_no"
        style="@style/login_input_fields"
        android:hint="@string/hint_mobile"
        android:inputType="phone" />

下面是 EditText 的样式

<style name="login_input_fields">
    <item name="android:layout_width">match_parent</item>
    <item name="android:layout_height">40dp</item>
    <item name="android:layout_marginBottom">10dp</item>
    <item name="android:background">@drawable/bg_curved_white_border</item>
    <item name="android:paddingRight">10dp</item>
    <item name="android:paddingLeft">10dp</item>
    <item name="android:textColor">@android:color/white</item>
    <item name="android:textColorHint">@color/underline</item>
    <item name="android:textSize">16sp</item>
    <item name="android:typeface">monospace</item>
</style>
于 2016-01-13T08:05:21.097 回答
-3

我认为您应该将标签的父级设置为“@android:style/Widget.TextView”

于 2014-05-28T10:44:33.660 回答