2012-06-18 9 views
7

Próbuję dodać textView do frameLayout. Właściwości TextView mają właściwości wrap_content, więc rosną, gdy tekst rośnie. Dodaję go do FrameLayout z tej funkcji:Dodaj widok tekstowy do FrameLayout w określonej pozycji

((FrameLayout) findViewById(R.id.mainLayout)).addView(mEditText); 

Jest to układ xml z ramą:

<FrameLayout 
xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@+id/mainLayout" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content"> 
</FrameLayout> 

TextView zawsze pojawia się w lewym górnym rogu ekranu . Chciałbym ustawić go w środkowej lub górnej połowie. Jak to zrobić?
Spojrzałem odpowiedzi w How can I dynamically set the position of view in Android? i nie były one znacznie pomaga :(Głównie spowodowane wywala ..

Odpowiedz

15

Spróbuj tego:.

FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT, Gravity.CENTER); 

((FrameLayout) findViewById(R.id.mainLayout)).addView(mEditText, params); 

Zmień Gravity do własnych potrzeb

BTW, układ ramki powinien używać fill_parent dla szerokości i wysokości

+0

Dzięki, to jest jedyna rzecz, która zadziałała !! Zmiana układu ramki na fill_parent powoduje usunięcie dla mnie rzeczy, nie pokazuje widoków znajdujących się pod tym widokiem. –

+0

zamiast fill_parent lepiej użyć match_parent. – drdrej

+0

Możesz także użyć 'LayoutParams.WRAP_CONTENT' dla właściwości' width' w przypadku, gdyby twój tekst miał mały tekst. –

0

Spróbuj grawitacji lub grawitacji układu do Framelayout lub widoku tekstowego, dzięki czemu twój Układ będzie w centrum ekran. Używać tak,

android:layout_gravity="center" 

lub

android:gravity="center" 
+1

nie pomaga, musi wstawić dynamicznie – xandy

0

można spróbować go ustawić wagę tekstu używać go jak-

textview.setGravity(Gravity.center); 

othervise przez xml ustawionej ciężkości do środka tak, że będzie wyświetl na środku i jeśli użyjesz centerinparents, to zawsze będzie na środku ekranu.

+0

Nie działa. Widok nadal pojawia się w lewym górnym rogu, ale kursor jest teraz w środku widoku –

0

Set FrameLayout właściwości android:layout_width i android:layout_height do fill_parent a także ustawić TextView własność LayoutGravity. takie jak Center, Right lub Top.

Dzięki

0

Dodaj android:layout_gravity="center" w układzie ramki

<FrameLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/mainLayout" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_gravity="center" > 
</FrameLayout> 
+0

nic nie zmienia .. :( –

0

Ustawianie wagi programowo zdecydowanie działa Proszę ustawić layout_gravity do prawej w xml TextView.setGravity (Gravity.RIGHT);

Powiązane problemy