9

我试图基于textview创建类似toast的控件,我发现textview的行为非常奇怪,以防它有九个可绘制的补丁作为背景。

这是xml定义:

<by.pplware.view.QuickInfo
    android:id="@+id/quickinfo"
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentTop="true"
    android:layout_centerHorizontal="true"
    android:padding="20px"
    android:textSize="20px"
    android:textStyle="bold"
    android:typeface="serif"
    android:background="#FFFF0000"
/>

这是带有颜色背景的文本视图: 在此处输入图像描述

这是带有可绘制背景的文本视图: 在此处输入图像描述

据我了解,在 Ninepatch 背景的情况下,android 使填充透明并仅使用可绘制作为文本的背景。但我想将填充包含在九块背景覆盖的区域中。

这个问题有什么解决方案吗?

4

1 回答 1

27

Try any of these:

  1. Set the background ninepatch via the "android:background" xml property instead of programatically; this cooperates with XML-defined padding.
  2. If you need to set the background programatically, try to re-set the padding after setting the background (if you set the padding then set the background, I'd assume the padding defined in the ninepatch itself overrides it).
  3. Avoid the entire issue and just set the padding areas in your ninepatch image itself (that's the right and bottom black bars).
于 2011-01-31T21:20:40.430 回答