1

我查看了类似的问题并使用了它的答案,但是如果我将它们组合成 1TextView并将android:drawableTop=它显示在我现在拥有的位置非常奇怪,它只是将图像堆叠在我想要的文本之上。

原来的

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".Navigation" >

    <ImageView
        android:id="@+id/logo"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:contentDescription="@string/logo_name"
        android:src="@drawable/generic_logo" />

    <TextView
        android:id="@+id/about"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/about"
        android:textSize="55sp"
        android:onClick="onClick"
        android:clickable="true" />

</LinearLayout>

与复合

    <TextView
        android:id="@+id/about"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/about"
        android:textSize="55sp"
        android:onClick="onClick"
        android:clickable="true"
        android:drawableTop="@drawable/generic_logo" />

</LinearLayout>

Compound 将图像拉伸到我模拟的 android 的参数之外。我该如何解决这个问题并摆脱警告?

4

1 回答 1

2

因此,就测量和布局而言,这两者实际上是在做完全不同的事情。首先是弄清楚图像需要多少空间,把它放在那里,弄清楚文本需要多少空间,然后把它放在图像下方。

第二个是弄清楚它需要多少空间来放置文本。然后在背景的顶部绘制图像,将其缩放以适应文本使用的整个空间。然后它在它上面绘制文本。

如果您想让图像不被拉伸,请使用第一个版本。第二个版本是错误的。复合可绘制对象用于诸如 9 个补丁之类的东西,其中单个背景图像被分成几部分。

如果这些都没有做你真正想要的,解释那是什么,我们会看看我们是否能弄清楚如何去做。

于 2013-01-20T04:36:26.163 回答