RelativeLayout.LayoutParams не будет правильно устанавливать ширину Android - PullRequest
0 голосов
/ 31 августа 2018

Итак, я пытаюсь динамически увеличить размер текстового поля, выполнив следующие действия:

    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, все в текстовом поле показано здесь . но когда дело доходит до более крупных телефонов, таких как Nexus 6P, текст смещается от центра, здесь отображается .

Чтобы отцентрировать его, я поигрался со значениями вручную и попытался изменить ширину текстового поля, чтобы она была немного шире, выполнив new RelativeLayout.LayoutParams(500, height);. Когда я запустил код на Nexus 6P, ширина не стала больше, но когда я установил ширину на 100, ширина уменьшилась. Когда я запускал его на Nexus 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, что было бы лучшим способом настроить макет этого текстового поля, чтобы он правильно отображался как на меньших, так и на больших телефонах?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...