Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android TextView中的偏移文本_Android - Fatal编程技术网

Android TextView中的偏移文本

Android TextView中的偏移文本,android,Android,此代码成功地将文本视图中的文本垂直对齐。字体大小为视图高度的75% 但是,如果我将文本的大小增加到(比如)19px或视图高度的95%,则垂直居中会中断,因为文本视图似乎不会绘制高于视图顶部的文本 可以将文本向上分流吗?您可以将高度设置为wrap\u content,然后使用lineSpacingMultiplier将行高设置为文本高度的1.3倍。这意味着文本始终约为行高的75% 此外,对于文本大小,您应该使用sp而不是dp,这样,当人们更改其设置中的文本大小时,应用程序更新中的文本大小对于可

此代码成功地将文本视图中的文本垂直对齐。字体大小为视图高度的75%

但是,如果我将文本的大小增加到(比如)19px或视图高度的95%,则垂直居中会中断,因为文本视图似乎不会绘制高于视图顶部的文本


可以将文本向上分流吗?

您可以将高度设置为
wrap\u content
,然后使用
lineSpacingMultiplier
将行高设置为文本高度的
1.3倍。这意味着文本始终约为行高的75%

此外,对于文本大小,您应该使用
sp
而不是
dp
,这样,当人们更改其设置中的文本大小时,应用程序更新中的文本大小对于可访问性非常重要


最后,您不需要将
文本视图
包装成
线性布局
,除非您计划添加更多视图

我使用
画布单独绘制背景。绘制线
并将
文本视图
向上移动背景高度的10%。

我使用的是px而不是dp,该值基于运行时高度。这会避免不同文本/屏幕大小的问题吗?这会导致不同的问题,如果使用
px
,在高密度屏幕中,文本将比低密度屏幕小。由于屏幕大小和密度的问题,android上的大小通常应避免使用
px
,但是如果第三方控件提供了一个x像素的框,那么将某些文本的高度作为x的百分比将是安全的?(只要第三方控件能够正确缩放…)如果第三方提供文本视图的高度,那么您就必须以编程方式设置文本的高度,因为您在编译时不知道xml的高度。在这种情况下,px可能没问题,但第三方可能会使您的视图在某些设备上看起来很奇怪。如果可能的话,我建议不要使用第三方,因为我正在运行时设置文本大小。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="90px"
    android:layout_height="20px">
    <TextView
        android:maxLines="1"
        android:ellipsize="end"
        android:textSize="15px"
        android:textColor="@android:color/white"
        android:background="@color/material_grey_600"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:gravity="center_vertical"
        android:text="hello this is some long text" />
</LinearLayout>