Итак, я пытаюсь динамически увеличить размер текстового поля, выполнив следующие действия:
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, что было бы лучшим способом настроить макет этого текстового поля, чтобы он правильно отображался как на меньших, так и на больших телефонах?