У меня есть RealtiveLayout, созданный в XML-файле, настроенный для просмотра 480x320 (портрет).Все создано в единицах "падения".В основном он содержит 4 текстовых просмотра, каждый из которых использует четверть экрана.Все они расположены в layout_marginLeft и layout_marginTop.В приложении есть функция, с помощью которой вы можете нажать на любое из этих 4 текстовых представлений, чтобы сделать его большим, а остальные 3 уменьшатся в размере и выровняются относительно друг друга слева от вида.Коснитесь большого показания еще раз, и все 4 вернутся к своему первоначальному размеру.
Все это прекрасно работает на разных устройствах и в эмуляторе - но не в том случае, если эмулятор работает на Android 3.0 или выше ...
Во-первых, приложение не масштабируется, поэтому я создал код, который рассчитывает размеры текста и размер шрифта относительно размера экрана.Все это прекрасно работает, но в Android 3.0 при изменении размера текста происходят забавные вещи.Внезапно это выглядит так, как будто перед фактическим текстом вставлена пустая строка, а это означает, что я вижу только верхнюю часть текста, который хочу отобразить.
Вот как определяется текстовое представление.В верхней части каждого показания есть прозрачная кнопка.
<TextView android:id="@+id/out1"
android:textStyle="bold"
android:typeface="serif"
android:text="@string/Out1_text"
android:layout_height="80dip"
android:layout_width="161dip"
android:layout_marginLeft="54dip"
android:layout_marginTop="57dip"
android:scrollHorizontally="true"
android:gravity="left|top"
android:maxLines="1"
android:background="#7f7f7f"
android:textColor="@android:color/white"/>
<ImageButton android:id="@+id/BigButton1"
android:background="@drawable/transparent"
android:layout_marginLeft="54dp"
android:layout_marginTop="57dp"
android:layout_width="161dp"
android:layout_height="80dp"/>
Я пробовал разные вещи, чтобы убедиться, что это только одна строка текста, я установил гравитацию в верхнем левом углу (хотя это не такто, что я хочу), но то же самое продолжаю происходить.
Я изменяю размер и шрифт TextView и размер кнопки следующим кодом:
RelativeLayout.LayoutParams params1 = new RelativeLayout.LayoutParams(NewOut1Width, NewOut1Height);
params1.setMargins(NewOut1X, NewOut1Y, 0, 0);
big1Button.setLayoutParams(params1);
out1_txtView.setLayoutParams(params1);
out1_txtView.setTextSize(NewOut1FontSize);
«Забавно»что сначала я называю свою процедуру изменения размера, и все выглядит хорошо, как только я сделал одно считывание большим, а затем снова вернулся к стандартному размеру (с теми же значениями, которые использовались для начального отображения, текст большого текстового представления сдвинулся внизодна строка в текстовом виде.
Кто-нибудь знает, что происходит?
ДОПОЛНИТЕЛЬНАЯ ИНФОРМАЦИЯ Я пытался добавить getLineBounds, и это показывает, чтобазовая линия textView увеличивается при увеличении textSize, но не уменьшается снова при уменьшении textSize. Не имеет значения, есть ли у меня гравитация сверху, по центру или снизу.