【问题标题】:Text in textview slides down in Android 3.0文本视图中的文本在 Android 3.0 中向下滑动
【发布时间】:2011-11-21 19:44:09
【问题描述】:

我在一个针对 480x320(纵向)视图调整的 XML 文件中创建了 RealtiveLayout。一切都以“倾角”单位创建。基本上它拥有 4 个文本视图,每个文本视图使用四分之一的屏幕。它们都由 layout_marginLeft 和 layout_marginTop 定位。 该应用程序有一个功能,您可以点击这 4 个文本视图中的任何一个来使其变大,而其他 3 个文本视图将缩小并在视图左侧相互对齐。再次点击大读数,所有 4 个都将恢复到初始大小。

这一切都可以在不同的设备和模拟器中正常运行 - 但如果模拟器运行 android 3.0 或更高版本...

首先,该应用程序无法缩放,因此我编写了一些代码来计算相对于屏幕大小的文本视图大小和字体大小。这一切都很好,但在 Android 3.0 中,一旦文本调整大小,就会发生有趣的事情。突然看起来好像在实际文本之前插入了一个空行,这意味着我只看到了我要显示的文本的顶部。

这是 textview 的定义方式。每个读数的顶部都有一个透明按钮。

<TextView android:id="@+id/out1" 
android:textStyle="bold"
android:typeface="serif"
android:text="@string/Out1_text" 
android:layout_height="80dip" 
android:layout_width="161dip" 
android:layout_marginLeft="54dip"
android:layout_marginTop="57dip"
android:scrollHorizontally="true"
android:gravity="left|top"
android:maxLines="1"
android:background="#7f7f7f"
android:textColor="@android:color/white"/>
<ImageButton android:id="@+id/BigButton1" 
android:background="@drawable/transparent" 
android:layout_marginLeft="54dp" 
android:layout_marginTop="57dp" 
android:layout_width="161dp" 
android:layout_height="80dp"/>

我尝试了不同的方法来确保它只有一行文本,我已将重力设置为左上角(尽管这不是我想要的),但同样的事情一直在发生。

我通过以下代码更改了 TextView 的大小和字体以及按钮大小:

RelativeLayout.LayoutParams params1 = new RelativeLayout.LayoutParams(NewOut1Width, NewOut1Height);
params1.setMargins(NewOut1X, NewOut1Y, 0, 0);
big1Button.setLayoutParams(params1);
out1_txtView.setLayoutParams(params1);
out1_txtView.setTextSize(NewOut1FontSize);

“有趣”的事情是,我最初调用我的调整大小例程,一切看起来都很好,一旦我将一个读数变大,然后再次回到标准尺寸(使用与初始显示相同的值,文本大的 textview 在 textview 中向下移动了一行。

有人知道发生了什么吗?

其他信息 我尝试添加一个 getLineBounds,它显示 textView 的基线随着 textSize 的增加而增加,但当 textSize 减小时它不会再次下降。我的重力是顶部、中心还是底部都没有关系。

【问题讨论】:

  • 我也遇到了同样的问题。我的 TextView 有一个背景图片。 TextView 位于相对布局的表格中。我已经删除了图像,问题似乎已经消失了,但我还不能确定。几周后一切正常,然后问题突然出现在对布局的另一部分进行微小的、不相关的更改(我将顶部的项目从按钮更改为 ImageView)。

标签: android textview


【解决方案1】:

试试这个:

将 TextView 的 minWidth 设置为 5dp,将 layout_width 设置为 wrap_content。这意味着每个 textView 必须占用 5dp。此外,您不需要添加重力,因为您给出了 minWidth。并且,不要将 textView 的宽度和高度设置为静态值。尝试类似:

RelativeLayout.LayoutParams relativeLayoutParams = new RelativeLayout.LayoutParams(width, height);
textView.setLayoutParams(relativeLayoutParams);

【讨论】:

    猜你喜欢
    • 2011-04-11
    • 2023-03-29
    • 1970-01-01
    • 2012-05-06
    • 1970-01-01
    • 1970-01-01
    • 2015-10-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多