文本视图中的文本在Android 3.0中向下滑动

文本视图中的文本在Android 3.0中向下滑动,android,textview,Android,Textview,我在一个XML文件中创建了一个RealtiveLayout,该文件针对480x320(纵向)视图进行了调整。一切都是以“dip”单位创建的。基本上它有4个文本视图,每个视图占用屏幕的四分之一。它们都是通过layout_marginLeft和layout_marginTop定位的。 该应用程序有一个功能,你可以点击这4个文本视图中的任意一个使其变大,而其他3个文本视图的大小将减小,并在视图的左侧相互对齐。再次点击大读数,所有4个将返回到其初始大小 这一切都可以在不同的设备和模拟器上正常工作,但如果

我在一个XML文件中创建了一个RealtiveLayout,该文件针对480x320(纵向)视图进行了调整。一切都是以“dip”单位创建的。基本上它有4个文本视图,每个视图占用屏幕的四分之一。它们都是通过layout_marginLeft和layout_marginTop定位的。 该应用程序有一个功能,你可以点击这4个文本视图中的任意一个使其变大,而其他3个文本视图的大小将减小,并在视图的左侧相互对齐。再次点击大读数,所有4个将返回到其初始大小

这一切都可以在不同的设备和模拟器上正常工作,但如果模拟器运行的是android 3.0或更高版本,就不行了

首先,该应用程序无法缩放,所以我编写了一些代码,计算文本视图大小和字体大小相对于屏幕大小的关系。这一切都很完美,但在安卓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"/>
“有趣的”是,我最初调用了我的调整大小例程,一切看起来都正常,一旦我将一个读数变大,然后再次返回到标准大小(使用与初始显示相同的值,文本视图的文本变大了,在文本视图中向下移动了一行)

有人知道发生了什么事吗

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

请尝试以下操作:

将TextView的minWidth设置为5dp,将layout_width设置为wrap_内容。这意味着每个TextView都必须占用5dp。此外,由于您给出了minWidth,因此不需要添加重力。并且,不要将TextView的宽度和高度设置为静态值。请尝试以下操作:

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

我也遇到了同样的问题。我的TextView有一个背景图像。TextView在一个相对布局的表中。我已经删除了该图像,问题似乎已经消失,但我还不能确定。在几个星期内一切正常,但在对布局的另一部分进行了微小的、不相关的更改后,问题突然出现(我将顶部的项目从按钮更改为ImageView)。
RelativeLayout.LayoutParams relativeLayoutParams = new RelativeLayout.LayoutParams(width, height);
textView.setLayoutParams(relativeLayoutParams);