Текст в textview скользит вниз в Android 3.0 - PullRequest
5 голосов
/ 21 ноября 2011

У меня есть 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. Не имеет значения, есть ли у меня гравитация сверху, по центру или снизу.

1 Ответ

0 голосов
/ 18 декабря 2012

Просто попробуйте это:

установить minWidth TextView, чтобы сказать 5dp, а layout_width равным wrap_content. Это будет означать, что каждый textView будет обязательно занимать 5dp. Кроме того, вам не нужно добавлять гравитацию, так как вы даете minWidth. И не устанавливайте ширину и высоту textView в статическое значение. Попробуйте что-то вроде:

RelativeLayout.LayoutParams relativeLayoutParams = new RelativeLayout.LayoutParams(width, height);
textView.setLayoutParams(relativeLayoutParams);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...