因此,我尝试通过执行以下操作来动态显示文本框的大小:
Paint paint = new Paint();
paint.setStyle(Style.FILL_AND_STROKE);
paint.setStrokeWidth(2);
paint.setTextSize(numTextSize);
Rect textBounds = new Rect();
paint.getTextBounds("00", 0, "00".length(), textBounds);
Resources r = context.getResources();
float width = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, textBounds.width(), r.getDisplayMetrics());
float height = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, textBounds.height(), r.getDisplayMetrics());
setViewSize(2 * (int) width, 2 * (int) height);
private void setViewSize(int width, int height)
{
RelativeLayout.LayoutParams rlp = new RelativeLayout.LayoutParams(width, height);
rlp.addRule(CENTER_VERTICAL);
rlp.addRule(RIGHT_OF, SEPARATOR_ID);
numView.setLayoutParams(rlp);
numView.setPageWidth(width);
numView.setPageHeight(height);
}
这对于诸如nexus 4和nexus S之类的较小手机效果很好,所有内容都在here所示的文本框中。但是当涉及到较大的手机(例如nexus 6P)时,文字就会偏离中心,如here所示。
为了居中,我手动操作值,并尝试通过执行new RelativeLayout.LayoutParams(500, height);
将文本框宽度更改为稍宽。当我在nexus 6P上运行代码时,宽度没有变大,但是当我将宽度设置为100时,宽度会缩小。当我在连结4或S上运行时,宽度分别更改为500和100。
我试图更改xml代码的宽度和高度,而这对实际的文本框完全没有任何作用。以下是xml代码:
<com.android.DigView
android:id="@+id/digView"
android:layout_width="200dp"
android:layout_height="100dp"
android:layout_marginTop="20dp"
android:layout_marginBottom="20dp"
android:layout_centerHorizontal="true"
android:layout_above="@+id/anaView" />
问题1,在nexus 6P中,为什么当我尝试增加文本框布局的宽度时没有改变? 问题2,有什么更好的方法来设置此文本框布局设计,使其能够在较小的手机和较大的手机上正确显示?