Android:是不是可以在 TextViews 9patch 背景之外设置 drawableLeft?

Posted

技术标签:

【中文标题】Android:是不是可以在 TextViews 9patch 背景之外设置 drawableLeft?【英文标题】:Android: Is It Possible To Set drawableLeft Outsite The TextViews 9patch Background?Android:是否可以在 TextViews 9patch 背景之外设置 drawableLeft? 【发布时间】:2013-04-14 00:45:12 【问题描述】:

是否可以在 TextViews 9patch 背景之外设置 drawableLeft?

我正在使用此代码:

    <TextView
        android:id="@+id/textView"
        android:layout_
        android:layout_
        android:background="@drawable/background_9patch"
        android:drawableLeft="@drawable/leftImg"
        android:text="Hello World" />

我希望 android:drawableLeft="@drawable/leftImg" 位于 android:background="@drawable/background_9patch" 的左侧。

    我可以使用单个 TextView 还是应该在 LinearLayout 中使用 TextView + ImageView ? 我可以在drawableLeft中设置drawable的大小吗?

【问题讨论】:

【参考方案1】:

由于您的背景是自定义的 9-patch,您只需修改背景图像,在可拉伸内容的左侧有一个固定大小的透明部分,为左侧Drawable 提供足够的填充。这就是框架为 CheckBox 等小部件创建背景的方式,这些小部件将文本移动到相应按钮旁边。

【讨论】:

也许我没明白 - 但我的 android:drawableLeft="@drawable/leftImg" 在 9patch 的可拉伸区域内(所以如果我要在左侧添加一个透明部分- drawable 不会在新部分中 - 它将在 strachable 部分中)。 您的视图内容相对于 9-patch 的位置由内容区域栏定义(图像的底部和右侧...顶部和左侧定义拉伸区域),因此仅当您还排除了带有这些条的透明区域时才会发生。 如何设置 android:drawableLeft="@drawable/leftImg" 大小 - 仅在 .png 中? 内容将与 Drawable 一样大,默认情况下是图像的固有大小。如果您调整 Drawable 边界或将其包装在 ScaleDrawable 之类的东西中,您可以更改它。在这种情况下,您必须在 Java 中而不是 XML 中设置 drawableLeft 属性。如果可以的话,最好以您需要的正确大小提供资产。

以上是关于Android:是不是可以在 TextViews 9patch 背景之外设置 drawableLeft?的主要内容,如果未能解决你的问题,请参考以下文章

是否可以使用 android:DrawableRight 在 Buttons 和 TextViews 中使用 VectorDrawable?

我可以在 Android Studio 中创建一个包含 TextViews 和 ImageViews 的 ArrayList 吗?

Android上的双文本TextViews [重复]

TextViews 不显示在 Android 中

让Android主屏幕小部件在textviews之间交替的最佳方式是啥?

TextViews 在 Android 4 上仅动画一次