为什么我不应该设置在一个风格layout_width和layout_height?(Why shou

2019-09-02 14:28发布

如果我有很多作为商品标签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. 是否有关于它为什么报告此警告的一些原因?

Answer 1:

您是否尝试过清理的项目?

我使用的也是对的宽度和长度的一些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>



Answer 2:

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



Answer 3:

我曾经尝试这样做,它只是做工精细..

 <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>


Answer 4:

老话题,但仍然:)

我不认为一个宽度和高度设置为风格是一个好主意。 基本上,它编译和一般的作品,但我经历了更多的复杂布局的情况下,包括等在那里这是造成问题。 当你想想看,它并没有真正意义的把它放在那里。

如果你想为不同的布局不同的值,你可以很容易地使用@dimen。 它也可以成为别人使用你的风格相当令人吃惊。 你通常要设置颜色,大小和行为风格,但规模不是的事情之一。

你永远不知道在什么情况下你的风格会中使用。这只是当你看到你开始有某事本来可以做的更好的感觉,这些有异味的东西之一。



Answer 5:

我的事情你应该把标签的父为“@android:风格/ Widget.TextView”



文章来源: Why shouldn't I set layout_width and layout_height in a style?