本次分享的主题源于笔者在实际开发中遇到的问题。

具体现象为:当普通的9-Patch图用作TextView的backGround属性后,整个TextView便有了一定的Padding值。但笔者并没有给定padding属性,甚至在预览视图中,也没有展现出padding效果。但运行起来后,便莫名其妙地有了内边距。

我们先来看布局代码:

<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:layout_gravity="center"
android:background="@mipmap/background"
android:text="@string/app_name"
tools:context=".MainActivity"> </TextView>

在Android Studio内的界面预览如图:



红色边框的图片即背景,是经过9-Patch处理过的.9.png文件。

显然,在预览时是正常没有内边距的,接下来我们运行它。其效果如下图所示:



可以看到,实际运行时,内边距出现了。

经过一番问题排查,发现其根源在于.9.png文件,在Android Studio中打开这个图片,发现它的缩放设定是这样的:

可见,中央深粉色的部分就是自由拉伸的部分。定义它的,则是图片四周的黑色线条。

接着,我们勾选“Show content”,即预览显示内容区,如下图所示:

可见,内容仅显示在中央非空白区域,也就是我们最终看到的运行效果了。

到此,问题的根源找到了,我们怎么解决它呢?很简单,在进行图片拉伸定义时,我们应使用上和左边缘进行划线定义,而右和下边缘则定义了内容可填充的区域。因此,做如下图所示的修改:

分别仔细观察上侧和下侧,左侧和右侧边缘,可以看到上侧和下侧并非完全划线,而是定义了拉伸的部分;而下侧和右侧则是完全划线,限定了内容可填充区域。

再次运行,可见内边距已消失。

当然,还有一种解决办法。即在xml布局文件中,将TextView的padding属性值强制写为0dp,内边距则也会为0。但笔者更推荐使用前一种方法,因为强制为0的方法,在当确实需要有padding值的时候,往往会不太好处理。

好了,以上就是本次分享给大家的开发小技巧,希望能够对你有所帮助。

解谜:为何用了9-Patch背景图后自带Padding属性?的更多相关文章

  1. background 的一些 小的细节: 1, 背景色覆盖范围: border+ width+ padding ;背景图覆盖范围: width + padding ; 2设置多个背景图片 ; 3) background-position定位百分比的计算方式: 4)background-clip 和 background-origin 的区别

    1. background (background-color, background-image)  背景色覆盖范围: border+ width+ padding ;背景图覆盖范围: width ...

  2. Microsoft HoloLens 技术解谜(下)

    读者提问之“HoloLens 的深度传感器有没有可能是基于 TOF?” 先介绍下背景知识,市面上常见的有三种类型的深度传感器: 结构光,这个技术的代表产品是 Kinect 一代,它的传感器芯片用的是 ...

  3. pythonchallenge 解谜 Level 0

    解谜地址: http://www.pythonchallenge.com/pc/def/0.html 这题没什么难度,意思就是得到2的38次方的值,然后,替换 http://www.pythoncha ...

  4. pythonchallenge 解谜

    所有代码均使用python 3.5.1 版本 最近在学python,闲来无事觉得这个解谜还挺有意思. 解谜网址  http://www.pythonchallenge.com/ 接下来会写破解教程~

  5. C++进阶--解谜operator new/delete

    //############################################################################ // 解谜operator new/del ...

  6. Unity2D项目-平台、解谜、战斗! 0.1 序言:团队、项目提出、初步设计、剧情大纲

    各位看官老爷们,这里是RuaiRuai工作室(以下简称RR社),一个做单机游戏的兴趣作坊. 本文跟大家聊一下社团内第一个游戏项目.算是从萌新项目组长的角度,从第一个里程碑的结点处,往前看总结一下项目之 ...

  7. vue-cli打包后dist文件运行空白和背景图显示问题详解

    1.文件引用路径.我们直接运行打包后的文件夹中的index.html文件,会看到网页一片空白,f12调试,全是css,js路径引用错误的问题. 解决:到config文件夹中打开index.js文件. ...

  8. 冒泡,setinterval,背景图的div绑定事件,匿名函数问题

    1.会冒泡到兄弟元素么? $(function(){ $("#a").click(function(){alert("a")}) $("#b" ...

  9. 在Excel表里面插入背景图

    工作中我们会经常用到MS Excel,通常我们打开MS Excel,里面的工作表都是空白单调的背景.当然了,MS Excel可以在工作簿里面插入背景图片.那么问题来了,如果你没有安装Microsoft ...

随机推荐

  1. 使用Mysql分区表对数据库进行优化

    早期工作中没有做好足够的设计,目前记录表单表数据2000w且无有效索引,表现是分页缓慢,模糊查询拉闸. 当前业务中,写操作会多于读操作,时不时会遇到慢SQL占用过多的数据连接,导致写操作无法正常进行. ...

  2. Spring 标签纸property

    转载自https://www.cnblogs.com/zzb-yp/p/9968849.html Spring中XML文件配置Bean的简单示例,如下: <bean id="car&q ...

  3. spring boot之Thymeleaf

    没怎么仔细研究,就是spring boot的服务器需要一个登录界面,用这个实现了一个白板式的页面. https://blog.csdn.net/yelllowcong/article/details/ ...

  4. 从 LRU Cache 带你看面试的本质

    前言 大家好,这里是<齐姐聊算法>系列之 LRU 问题. 在讲这道题之前,我想先聊聊「技术面试究竟是在考什么」这个问题. 技术面试究竟在考什么 在人人都知道刷题的今天,面试官也都知道大家会 ...

  5. 刷题[GXYCTF2019]禁止套娃

    梳理思路 打开网站,发现很简单,只有flag在哪里的字样. 查看源码,常用后台目录,robots.txt,都未发现有任何东西. 扫描 直接拉进扫描器一扫,发现 思考可能是git源码泄露,可能可以恢复源 ...

  6. 转载:tensorflow slim模块用法

    https://www.cnblogs.com/hellcat/p/8058092.html

  7. Ubuntu修改时区和更新时间

    先查看当前系统时间 root@ubuntu:/# date -R 结果时区是:-0500 我需要的是东八区,这儿显示不是,所以需要设置一个时区 1.运行tzselect root@ubuntu:/# ...

  8. JSP2.2自定义标签、EL函数

    简介 JSTL是一个JSP标准标签库,可以解决大部分问题,但是如果我们需要一些更特殊的功能,就需要自定义类似JSTL中标签的标签.如果EL表达式无法满足我们的需求,我们也可以自定义EL函数. tld后 ...

  9. HTML中限制input 输入框输入内容

    限制 input 输入框只能输入纯数字1.onkeyup = "value=value.replace(/[^\d]/g,'')" 使用 onkeyup 事件,有 bug ,那就是 ...

  10. 决策树减支问题(优化)dfs减支问题

    #include <iostream>#include <cstdio>using namespace std;int mem[200];//开记忆数组int fib(int ...