2011-11-21 20 views
5

Mam plik RealtiveLayout utworzony w pliku XML dostosowanym do widoku 480x320 (portret). Wszystko powstaje w jednostkach "zanurzonych". Zasadniczo posiada 4 widoki tekstu, z których każda zawiera jedną czwartą ekranu. Wszystkie są pozycjonowane przez layout_marginLeft i layout_marginTop. Aplikacja ma funkcję, dzięki której możesz dotknąć dowolnego z 4 widoków tekstu, aby go powiększyć, a pozostałe 3 zmniejszą się i wyrównane względem siebie po lewej stronie widoku. Dotknij ponownie dużego odczytu, a wszystkie 4 powrócą do pierwotnego rozmiaru.Tekst w slajdach tekstowych w systemie Android 3.0

To wszystko działa dobrze na różnych urządzeniach i w emulatorze - ale nie wtedy, gdy emulator działa Android 3.0 lub wyższy ...

Przede wszystkim aplikacja nie skaluje, więc zrobiłem jakiś kod, który oblicza rozmiary i rozmiar czcionki w stosunku do rozmiaru ekranu. Wszystko działa pięknie, ale w Androidzie 3.0 zabawne rzeczy dzieją się po zmianie rozmiaru tekstu. Nagle wydaje się, że przed tekstem jest wstawiona pusta linia, co oznacza, że ​​widzę tylko wierzchołek tekstu, który chcę wyświetlić.

Oto, jak zdefiniowany jest widok tekstowy. Na każdym z nich znajduje się przezroczysty przycisk.

<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"/> 

Próbowałem różnych rzeczy, aby upewnić się, że jest tylko jedna linia tekstu, mam ustawić wagę do lewego górnego (mimo, że nie jest to, co chcę), ale to samo dzieje się zachować.

zmienić rozmiar i czcionkę TextView i rozmiar przycisku przez ten kod:

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); 

W „śmieszne” jest to, że mogę zadzwonić do mojego zmiany rozmiaru rutynowych początkowo, i wszystko wygląda w porządku, raz mam dokonał jednego odczytu, a następnie ponownie powrócił do standardowego rozmiaru (z tymi samymi wartościami, które zastosowano przy pierwszym wyświetlaniu, tekst dużego tekstu przesunął się w dół o jedną linię w obrębie podglądu tekstowego:

Czy ktoś ma pojęcie co się dzieje?

DODATKOWE INFORMACJE Próbowałem dodać getLineBounds, i to pokazuje, że linia bazowa textView wzrasta wraz ze wzrostem rozmiaru tekstu, ale nie zmniejsza się, gdy zmniejsza się rozmiar tekstu. Nie ma znaczenia, czy mam grawitację na górze, na środku czy na dole.

+0

Mam ten sam problem. Mój TextView miał obraz tła. Widoki TextView znajdują się w tabeli we względnym układzie. Usunąłem obraz, a problem prawdopodobnie zniknął, ale nie jestem jeszcze pewien. Wszystko działało dobrze przez kilka tygodni, wtedy problem pojawił się nagle po drobnej, niepowiązanej zmianie na inną część układu (zmieniłem pozycję na górze z przycisku, na ImageView). –

Odpowiedz

0

Spróbuj tego:

ustawić MinWidth z TextView powiedzieć 5DP a ​​layout_width do wrap_content. Oznaczałoby to, że każdy tekstView musiałby koniecznie zajmować 5dp. Ponadto nie musisz dodawać grawitacji, ponieważ podajesz minimalną szerokość. I nie ustawiaj width i height textView na wartość statyczną. Spróbuj coś takiego:

RelativeLayout.LayoutParams relativeLayoutParams = new RelativeLayout.LayoutParams(width, height); 
textView.setLayoutParams(relativeLayoutParams); 
Powiązane problemy