Android setTextSize TextView移动基线并截断文本高度

2024-02-14

我正在尝试使用背景图像调整 TextView 的大小。我有一个扩展 TextView 类的类,并按如下方式添加:

    MyCustomTextView tv2 = new MyCustomTextView(this);
    RelativeLayout.LayoutParams lparams = new          
                 RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT,  
                                             LayoutParams.WRAP_CONTENT);
    lparams.addRule(RelativeLayout.ALIGN_PARENT_TOP);
    tv2.setLayoutParams(lparams);
    myLayout.addView(v);

我在自定义 TextView 类中像这样缩放:

    public float getScaledTextHeight()
    {
        float textHeightDPI = initial_size/windowHeight_inDPI;
        float textOnScreenHeight = textHeightDPI * windowHeight_inDPI;
        float scaledText = textOnScreenHeight * mZoom;
        return scaledText;
    }
    public void setZoomTextHeight(float zoom)
    {
        mZoom = zoom;
        image_size = getScaledTextHeight();

        float mX = ((offset_x + img_offset_x) * mZoom);
        float mY = ((offset_y + img_offset_y) * mZoom);
        RelativeLayout.LayoutParams position1 =
                (android.widget.RelativeLayout.LayoutParams)this.getLayoutParams();

        position1.leftMargin = (int)mX;
        position1.topMargin  = (int)mY;
        position1.bottomMargin  = (int)(window_height - (position1.topMargin + 
                                   image_size + 16));
        this.setLayoutParams(position1);

        setTextSize(TypedValue.COMPLEX_UNIT_PX , image_size);

        invalidate();
    }

最终发生的情况是,增大文本将正确调整 TextView 的大小,但减小文本将保持与大时相同的基线。它开始从下往上剪切我的文本。

我的问题是,如何移动基线,以便在调整大小时底部不会被切断。

提前致谢。


我的(非)移动基线问题通过将缓冲区类型设置为可跨越来解决。这可以通过两种方式完成。在 xml 中设置缓冲区类型:

android:bufferType="spannable"

或在代码中使用适当的缓冲区类型调用设置文本:

setText(getText(),BufferType.SPANNABLE);

通过将 BufferType 设置为 spannable,TextView 将自动相应地重置基线。这将以非常小的性能成本为代价。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android setTextSize TextView移动基线并截断文本高度 的相关文章

随机推荐

  • 如何计算两个地点之间的时差

    我在计算两个时区之间的时差时遇到问题 如果我在位置 A 我知道纬度和经度以及当前时间 我去位置B我知道纬度和经度以及当前时间 如何计算当前两个点之间的时间差 以UTC为单位 首先获取一个可以转换纬度 经度以获取国家 地区和州 省的数据库或库
  • 为什么我的 SQL“NOT IN”子句产生与“NOT EXISTS”不同的结果

    当我期望两个 SQL 查询产生相同的结果时 它们会产生不同的结果 我正在尝试查找没有相应位置的事件的数量 所有位置都有事件 但事件也可以链接到非位置记录 以下查询生成计数 16244 这是正确的值 SELECT COUNT DISTINCT
  • 定义双感叹号?

    我理解双感叹号的作用 或者我认为我理解 但我不确定它是如何在随机对象上定义的 例如下面的代码片段 Assignment a if getAssignment query a return false hasSolution a if a r
  • uint 和 unsigned int 之间的区别?

    有什么区别吗uint and unsigned int 我正在查看此网站 但所有问题都涉及 C 或 C 我想要一个关于C语言的答案 如果相关的话 请注意我在 Linux 下使用 GCC uint不是标准类型 unsigned int is
  • 关闭 GPS 时广播接收器调用了 2 次?

    显现
  • 将 UTF-8 编码的 NSData 转换为 NSString

    我有UTF 8编码NSData来自 Windows 服务器 我想将其转换为NSString对于iPhone 由于数据包含在两个平台上具有不同值的字符 如度数符号 如何将数据转换为字符串 如果数据不是空终止的 您应该使用 initWithDa
  • 当只有插件源可用时,如何在 sbt 项目中使用插件?

    我想使用sbt 斯克鲁奇 https github com bancek sbt scrooge插件 但它的存储库现在不可用 http koofr github com http koofr github com 我想我应该将这个插件的源代
  • 如何在 NLTK 中进行依存解析?

    翻阅 NLTK 书 并不清楚如何从给定的句子生成依存树 本书的相关部分 依存语法子章节 https www nltk org book ch08 html dependencies and dependency grammar给出一个示例图
  • 数组与数组列表有显着差异吗? [复制]

    这个问题在这里已经有答案了 可能的重复 在 C 中何时使用 ArrayList 而不是 array https stackoverflow com questions 412813 when to use arraylist over ar
  • 混合 C 和 C++...对函数的未定义引用 [关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 在 C 项目中 我尝试调用这个在 C 中定义的函数 int CyBtldr RunAction CyBtldr Action action
  • 什么分布式消息队列支持百万级队列?

    我正在寻找一个分布式消息队列 它将支持数百万个队列 每个队列每秒处理数十条消息 消息会很小 几十个字节 而且我不希望队列变得很长 每个队列最多有几十条消息 但是当系统运行时 队列应该保持相当长的状态空的 我不确定集群中有多少个节点 可能取决
  • 使用指南针指向实际坐标位置而不仅仅是北

    我见过一些这样的例子 但不确定到底如何实现它 例如iPhone 指南针 GPS 方向 https stackoverflow com questions 4130821 iphone compass gps direction 中我需要在
  • 欧拉计划问题 233

    我决定解决欧拉计划接下来 但我遇到了一些重大问题 我做了一些分析并取得了一些相当不错的进展 但现在我陷入了困境 这是我的工作 Lemma 1 由于圆经过 4 个角点 因此对于任意 n 至少有 4 个解 但对于圆周上的每个点 都可以通过反射发
  • 有没有一种在 python 中创建复制构造函数的好方法?

    我意识到有人提出了与此非常相似的问题 尽管不完全是这样 我想为我的类的构造函数提供一个可选参数 如果它是我的类的实例 则将复制该参数 例如 类似 我知道这段代码不起作用 class Foo object def init self foo
  • 在对象数组中查找具有“id”属性最大值的对象

    在我的对象数组中 我想找到具有最高值的对象id财产 这是我的数组 myArray id 73 foo bar id 45 foo bar 一般来说 我使用 grep查找数组中的值 如下所示 var result grep myArray f
  • 在 Android 中触摸并拖动图像

    我正在研究一些示例 其中我想拖动与 Android 中的触摸相对应的图像 有人知道我该怎么做吗 public class TouchBall extends Activity Override protected void onCreate
  • 如何选择任意行的相邻行(在 sql 或 postgresql 中)?

    我想根据特定条件选择一些行 然后从该集合中取出一个条目及其前后的 5 行 现在 如果表上有主键 例如 主键在数值上比目标行的键小 5 且比目标行的键多 5 我可以在数字上执行此操作 因此选择主键为 7 的行及其附近的行 select pri
  • 如何在 Android 中编辑弹出菜单项的尺寸?

    我有一个弹出菜单 当我单击按钮时会下拉 然而 我觉得这个菜单中的项目相对于我的应用程序的整体视图来说看起来不太好 我想知道是否可以编辑菜单中项目的尺寸 如果可能的话 也许可以缩短每件物品的高度 PopupMenu popup new Pop
  • NPM 包中 src 和 dist 文件夹的作用

    我在用着矩形 https github com mgonto restangular用于 HTTP 请求 我想使用 customPATCH 方法 我可以在 Restangular src 目录中看到它here https github co
  • Android setTextSize TextView移动基线并截断文本高度

    我正在尝试使用背景图像调整 TextView 的大小 我有一个扩展 TextView 类的类 并按如下方式添加 MyCustomTextView tv2 new MyCustomTextView this RelativeLayout La