视图未保留可绘制 XML 高度?

Drawable XML height not preserved by View?

我有一个高度为 50dp

的可绘制对象 xml mybackground.xml
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        <shape>
            <gradient
                android:endColor="#00FF00"
                android:startColor="#00FFFF" />
            <size android:height="50dp" />
        </shape>
    </item>
</layer-list>

如果我在ImageView

中使用如下
<?xml version="1.0" encoding="utf-8"?>
<ImageView xmlns:android="http://schemas.android.com/apk/res/android"
    android:background="@drawable/mybackground"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    />

FrameLayout

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:background="@drawable/mybackground"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    />

显示为

但是,如果我改用 View

<?xml version="1.0" encoding="utf-8"?>
<View xmlns:android="http://schemas.android.com/apk/res/android"
    android:background="@drawable/mybackground"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    />

显示为

View 未保留 mybackground.xml 上定义的 height。我错过了什么吗?

我查看了您的问题,很想将视图 class 与其他 class 进行比较。导致在viewclassmeasure()中没有计算背景尺寸的部分,而在FrameLayout、ImageView等的measure()中,尺寸是考虑尺寸来决定的的背景。这似乎是一个简单的概念问题。