Android:如何在布局中放置纯色矩形?

Joe*_*doo 9 android android-layout

我有一个可以膨胀的RelativeLayout.我想在顶部添加一个跨越布局宽度的纯色矩形.我尝试将以下内容放入我的xml中:

<view android:id="@+id/top_alert"
    android:layout_width="match_parent"
    android:layout_height="2dp"
    android:layout_above="@+id/orders_gridview"
    android:layout_alignParentTop="true"
    android:background="@color/table_request_assistance"
    android:visibility="visible"/>
Run Code Online (Sandbox Code Playgroud)

现在,当我尝试给我的布局充气时,我在LayoutInflater.createViewFromTag上得到一个NullPointerException(第715行):

if (name.equals(TAG_1995)) {
Run Code Online (Sandbox Code Playgroud)

name 如此设置:

if (name.equals("view")) {
    name = attrs.getAttributeValue(null, "class");
}
Run Code Online (Sandbox Code Playgroud)

显然没有"类"属性.我该如何添加?我在http://schemas.android.com/apk/res/android中找不到任何结果.我应该加吗?这是标准的方法吗?它似乎应该是世界上最简单的东西.

Joe*_*doo 7

对于noobs,这里有一些更通用的标记.这将在顶部的父视图顶部打印一个10像素的高灰色矩形.

<View android:id="@+id/rectangle_at_the_top"
    android:layout_width="match_parent"
    android:layout_height="10dp"
    android:layout_alignParentTop="true"
    android:background="#DDDDDD"
    android:visibility="visible"/>
Run Code Online (Sandbox Code Playgroud)

说明:

这是矩形的id:

android:id="@+id/rectangle_at_the_top"
Run Code Online (Sandbox Code Playgroud)

这表示视图与父级一样宽:

android:layout_width="match_parent"
Run Code Online (Sandbox Code Playgroud)

请注意,您有时会看到"fill_parent".这已经被弃用了"match_parent".

这表示高度10"与独立像素无关:

android:layout_height="10dp"
Run Code Online (Sandbox Code Playgroud)

您问的"密度无关像素"是什么?我不是百分百肯定,但是这些人都知道: Android中的px,dp,dip和sp有什么区别?

这表示将矩形与父视图的顶部对齐:

android:layout_alignParentTop="true"
Run Code Online (Sandbox Code Playgroud)

更准确地说,它使View的上边缘与父上边缘相同.想把东西放在底部?是的,你猜对了:用layout_alignParentTop.

这表示将背景颜色设置为灰色:

android:background="#DDDDDD"
Run Code Online (Sandbox Code Playgroud)

DDDDDD是一个颜色值.您可以在此处找到其他颜色值的示例以及Google建议如何使用它们: Google的Android颜色指南

最后,这说明使这个视图可见:

android:visibility="visible"
Run Code Online (Sandbox Code Playgroud)

这通常是多余的,因为默认情况下它们是可见的.其他选项包括"隐形"和"消失",听起来相似但却截然不同.有关详细信息,请参阅此讨论: "隐形"和"消失"之间有什么区别?


ian*_*ake 3

类区分大小写 - 在本例中,您使用的是View类,因此它需要完全位于View您的 XML 中。