7

I'm trying to add a textView to a frameLayout. The TextView has wrap_content properties, so it grows when the text grows. I'm adding it to a FrameLayout with this function:

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

This is the xml of the frame layout:

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

The textView always appears in the top left corner of the screen. I'd like to position it in the middle, or top middle. How can this be done?
I looked over the answers in How can I dynamically set the position of view in Android? and they weren't much help :( Mainly caused crashes..

Community
  • 1
  • 1
n00b programmer
  • 2,651
  • 7
  • 37
  • 54

6 Answers6

15

Try this:

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

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

Change Gravity to suit your need.

BTW, the frame layout should use fill_parent for width and height

Farid
  • 2,217
  • 1
  • 16
  • 32
xandy
  • 27,069
  • 8
  • 58
  • 64
0

Try to gravity or Layout gravity to your Framelayout or the Textview. It makes your Layout to the center of the screen. Use like this,

android:layout_gravity="center"

or

android:gravity="center"
Akilan
  • 1,707
  • 1
  • 16
  • 29
0

you can try it by set the gravity of text use it like-

textview.setGravity(Gravity.center);

othervise by xml set gravity to center so it will display you in center and if you'll use centerinparents so it will always apperas at the center of screen.

MKJParekh
  • 33,551
  • 11
  • 85
  • 98
Ravi
  • 2,156
  • 3
  • 21
  • 36
0

Set FrameLayout properties android:layout_width and android:layout_height to fill_parent and also set TextView property LayoutGravity . such as Center, Right or Top.

Thanks

RredCat
  • 5,001
  • 3
  • 60
  • 95
Md Abdul Gafur
  • 6,169
  • 2
  • 26
  • 37
0

Add android:layout_gravity="center" in your frame layout

<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>
RredCat
  • 5,001
  • 3
  • 60
  • 95
swati
  • 1,233
  • 2
  • 16
  • 27
0

Setting the gravity programatically definitely works Please set the layout_gravity to right in the xml TextView.setGravity(Gravity.RIGHT);