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

Posted

技术标签:

【中文标题】Android:如何在布局中放置纯色矩形?【英文标题】:Android: How do I put a solid color rectangle in a Layout? 【发布时间】:2015-03-03 11:14:50 【问题描述】:

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

<view android:id="@+id/top_alert"
    android:layout_
    android:layout_
    android:layout_above="@+id/orders_gridview"
    android:layout_alignParentTop="true"
    android:background="@color/table_request_assistance"
    android:visibility="visible"/>

现在,当我尝试扩充布局时,我在 LayoutInflater.createViewFromTag(第 715 行)处收到 NullPointerException:

if (name.equals(TAG_1995)) 

name 设置得较早:

if (name.equals("view")) 
    name = attrs.getAttributeValue(null, "class");

显然没有“类”属性。我该如何添加?我在http://schemas.android.com/apk/res/android 中找不到任何接近的东西。我应该添加它吗?这是执行此操作的标准方法吗?看来这应该是世界上最简单的事情了。

【问题讨论】:

能否也发布异常 &lt;view 替换为&lt;View 会发生什么? 您可以使用不带文本的 TextView。我投了赞成票,因为我想知道这个问题的标准答案。 @ianhanniballake 好吧,现在它膨胀了。好的,所以“视图”什么都不是,“视图”是视图?我想知道该代码应该做什么。 name 等于“view”的预期情况是什么?将此作为答案发布,我会将其标记为正确。 @pbabcdefp 我有预感这是执行此操作的标准方法。我只是有一个错字。 【参考方案1】:

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

<View android:id="@+id/rectangle_at_the_top"
    android:layout_
    android:layout_
    android:layout_alignParentTop="true"
    android:background="#DDDDDD"
    android:visibility="visible"/>

说明:

这是矩形的 ID:

android:id="@+id/rectangle_at_the_top"

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

android:layout_

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

这表示将高度设为 10“与强度无关的像素高:

android:layout_

您问什么是“与密度无关的像素”?我不是 100% 确定,但这些人知道:What's the difference between px, dp, dip, and sp in Android?

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

android:layout_alignParentTop="true"

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

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

android:background="#DDDDDD"

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

最后,这是为了让这个视图可见:

android:visibility="visible"

这主要是多余的,因为它们默认是可见的。其他选项包括“invisible”和“gone”,它们听起来很相似,但有着本质的不同。有关更多信息,请参阅此讨论:What is the difference between "invisible" and "gone?"

【讨论】:

【参考方案2】:

类区分大小写 - 在这种情况下,您使用的是 View 类,因此它需要在您的 XML 中完全是 View

【讨论】:

以上是关于Android:如何在布局中放置纯色矩形?的主要内容,如果未能解决你的问题,请参考以下文章

如何以编程方式在 UIPageViewController 中放置自动布局约束?

如何使用自动布局约束在单个屏幕中放置两个视图

如何在中间的android中放置带有文本的元素之间的分隔线?

如何在Android CardView中放大和缩小布局

在 Android 的 FrameLayout 中放置视图

如何在 Android 中放置正确的应用程序图标大小,包括 Amazon Kindle Fire?