Я пытаюсь отобразить в Android с TextView таким образом, что текст в окне будет сверху выровнено:Действительно верхнее выравнивание текста в Android TextView
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Create container layout
FrameLayout layout = new FrameLayout(this);
// Create text label
TextView label = new TextView(this);
label.setTextSize(TypedValue.COMPLEX_UNIT_PX, 25); // 25 pixels tall
label.setGravity(Gravity.TOP + Gravity.CENTER); // Align text top-center
label.setPadding(0, 0, 0, 0); // No padding
Rect bounds = new Rect();
label.getPaint().getTextBounds("gdyl!", 0, 5, bounds); // Measure height
label.setText("good day, world! "+bounds.top+" to "+bounds.bottom);
label.setTextColor (0xFF000000); // Black text
label.setBackgroundColor(0xFF00FFFF); // Blue background
// Position text label
FrameLayout.LayoutParams layoutParams =
new FrameLayout.LayoutParams(300, 25, Gravity.LEFT + Gravity.TOP);
// also 25 pixels tall
layoutParams.setMargins(50, 50, 0, 0);
label.setLayoutParams(layoutParams);
// Compose screen
layout.addView(label);
setContentView(layout);
}
Этот код выводит следующее изображение:
вещи, чтобы отметить:
- Синее окно 25 пикселей та ll, точно так же, как запрошено
- Текстовые границы также указываются как 25 пикселей в высоту по требованию (6 - (-19) = 25)
- Текст не начинается в верхней части метки, но имеет надпись выше он, не обращая внимания setPadding()
- Это приводит к тому, текст обрезаемый в нижней части, даже если коробка технически достаточно высок
Как сказать TextView начать текст на самом верху коробка?
У меня есть два ограничения на возможные ответы:
- мне нужно сохранить текст верхним выровнен, хотя, так что если есть какой-то подвох с нижней выравниванью или центрирований его вертикально, а я могу» t использовать его, так как у меня есть сценарии, где TextView выше, чем нужно.
- Я немного похож на совместимость, поэтому, если возможно, я хотел бы придерживаться вызовов, которые были доступны в ранних API Android (желательно 1, но определенно не выше 7).
Предлагаю вам посмотреть на это; http://stackoverflow.com/questions/7549182/android-paint-measuretext-vs-gettextbounds Я считаю, что ваш textSize равен 25 px, но высота вашего textView больше 25 (я пробую 32 пикселя и полностью центрирую весь макет). –