android - 9 补丁图像中定义的内容区域不适用于自定义 View

标签 android

目前,我有一个自定义 View BarChart。我希望对它有一些红色阴影效果。我正在使用 9-patch 图像技术来实现这一目标。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:minHeight="240dp"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@drawable/card_background_red"
    android:orientation="vertical"
    android:padding="0dp" >

    <org.yccheok.jstock.gui.charting.BarChart
        android:id="@+id/bar_chart"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1" />

</LinearLayout>

在我的自定义 View 中,有一行代码,我将在 View 的末尾绘制字符串。

// Drawing string at end-y of BarChart custom view.
canvas.drawText("2007", x0, getHeight(), textPaint); 
canvas.drawText("2008", x1, getHeight(), textPaint);

我避免我的自定义 View “接触”任何红色阴影,我将我的内容区域定义为 9-patch,这样它就不会接触到红色阴影。

如您所见,内容区域几乎没有红色阴影。

enter image description here

我认为我绘制的文本永远不会触及红色阴影区域,因为我限制我的内容区域(整个自定义 View ?)远离红色阴影区域。但是,它不起作用。

enter image description here

我对 9 补丁图像的内容区域有错误的预期吗?我认为线性布局的“内容”是我的自定义 View BarChart。因此,BarChart 不应触及 9 补丁图像中特定的红色阴影。 ( http://www.shubhayu.com/android/9-patch-image-designers-vs-developers )

最佳答案

从 LinearLayout 中移除 android:padding="0dp"。它覆盖了 9-patch 的填充。

关于android - 9 补丁图像中定义的内容区域不适用于自定义 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17806256/

相关文章:

Android setVisibility 不适用于某些逻辑

java - 重新打开android时解析崩溃

java - Setter/Getter 方法不起作用

android - 在 Android/OpenSL 中,我可以释放单个缓冲区并将其排入 bufferQueue 中,而不是清除整个缓冲区吗?

android - 如何删除 TextView 的 9 补丁背景中的填充

android - 除了UIAutomator 2.0版本名称,UIObject和UIObject2之间有什么区别?

android - 尝试访问库项目中的 View 时出现 ClassNotFoundException

android - 在 Android TV Leanback 主题上使用 Snackbar

安卓应用介绍

Android Seekbar 拇指位置