RelativeLayout.LayoutParams无法正确设置宽度android

时间:2018-08-31 18:36:57

标签: android android-layout listview

因此,我尝试通过执行以下操作来动态显示文本框的大小:

    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,有什么更好的方法来设置此文本框布局设计,使其能够在较小的手机和较大的手机上正确显示?

0 个答案:

没有答案