【问题标题】:Custom View with Layer-List background drawable renders black screen具有图层列表背景可绘制的自定义视图呈现黑屏
【发布时间】:2013-11-13 02:52:54
【问题描述】:

我正在尝试构建一个自定义的 android 视图并应用一个作为图层列表的背景可绘制对象。

图层列表有两个项目:

  1. 背景色(白色)
  2. 一个简单的可绘制形状,它是一个带有圆角的描边矩形

这是可绘制的 xml:

<?xml version="1.0" encoding="utf-8"?>

<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@android:color/white"/>
    <item>
        <shape xmlns:android="http://schemas.android.com/apk/res/android"
            android:shape="rectangle">
            <corners android:radius="1dp" />
            <stroke
                android:width="2dp"
                android:color="@color/background_green" />
        </shape>
    </item>
</layer-list>

自定义视图是从 Android.view.View 派生的一个类,目前除了所需的测量重载之外没有其他功能。

我在活动布局的视图定义中应用背景:

<view
    android:layout_width="match_parent"
    android:layout_height="300dp"
    class="com.example.widget.TestView"
    android:id="@+id/view2"
    android:layout_gravity="center_horizontal"
    android:background="@drawable/rect_sig_cap"
    android:layout_margin="20dp" />

期望看到的是一个带有白色背景和绿色边框的视图。我在部署项目时实际上看到的是一个黑色背景和绿色边框的视图。

有趣的是,它正确显示在 Android Studio 的设计器预览中。只有当我将它部署到设备时,它才会呈现黑色。

我在这里遗漏了什么明显的东西吗?

【问题讨论】:

    标签: android android-view android-drawable


    【解决方案1】:

    对于那些感兴趣的人,我找到了解决方案。

    我已将可绘制形状定义为仅包含笔划定义。如果没有任何其他输入,这会导致填充颜色被推断为黑色。

    最后,Layer-List drawable 根本不需要。相反,将solid 填充定义添加到具有透明颜色的形状层,它就可以正常工作了。

    <?xml version="1.0" encoding="utf-8"?>
    
    <shape xmlns:android="http://schemas.android.com/apk/res/android"
        android:shape="rectangle">
        <corners android:radius="@dimen/corner_radius" />
        <stroke android:width="1dp"
            android:color="@color/background_green" />
        <solid android:color="@android:color/transparent" />
    </shape>
    

    【讨论】:

      【解决方案2】:

      试试这个。

      <layer-list xmlns:android="http://schemas.android.com/apk/res/android">
         <item>
          <color android:color="@color/white" />
         </item>
         <item>
              <shape xmlns:android="http://schemas.android.com/apk/res/android"
                  android:shape="rectangle">
                  <corners android:radius="1dp" />
                  <stroke
                      android:width="2dp"
                      android:color="@color/background_green" />
              </shape>
         </item>
      </layer-list>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-07-24
        • 1970-01-01
        • 2015-02-20
        • 1970-01-01
        • 2012-01-23
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多