我在为480x320(纵向)视图调整的XML文件中创建了RealtiveLayout。一切都是以“dip”单位创造的。基本上,它包含4个文本视图,每个文本视图使用四分之一的屏幕。它们都是由layout_marginLeft和layout_marginTop定位的。 该应用程序具有以下功能:您可以点击这4个文本视图中的任何一个以使其变大,而其他3个将减小尺寸并在视图的左侧彼此对齐。再次点击大型读数,所有4将返回其初始大小。
这一切在不同设备和模拟器中都能正常工作 - 但如果模拟器运行android 3.0或更高版本则不行......
首先,应用程序无法扩展,因此我制作了一些代码来计算相对于屏幕大小的textview大小和字体大小。这一切都很漂亮,但在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);
“有趣”的事情是我最初调用我的调整大小例程,一切看起来都没问题,一旦我将一个读数设置为大,然后再次返回标准尺寸(使用与初始显示相同的值,文本text的textview在textview中向下移动了一行。
有没有人知道发生了什么?
其他信息 我试图添加一个getLineBounds,它表明textView的基线随着textSize的增加而增加,但是当textSize减少时它不会再次下降。如果我有重力顶部,中心或底部并不重要。
答案 0 :(得分:0)
试试这个:
将TextView的minWidth设置为5dp,将layout_width设置为wrap_content。这意味着每个textView必然占用5dp。此外,您不需要添加重力,因为您给出了minWidth。并且,不要将textView的宽度和高度设置为静态值。尝试类似:
RelativeLayout.LayoutParams relativeLayoutParams = new RelativeLayout.LayoutParams(width, height);
textView.setLayoutParams(relativeLayoutParams);