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,671
  • 7
  • 41
  • 56

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,317
  • 1
  • 20
  • 34
xandy
  • 27,357
  • 8
  • 59
  • 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
  • 30
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
  • 34,073
  • 11
  • 87
  • 98
Ravi
  • 2,277
  • 3
  • 22
  • 37
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,259
  • 5
  • 60
  • 100
Md Abdul Gafur
  • 6,213
  • 2
  • 27
  • 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,259
  • 5
  • 60
  • 100
swati
  • 1,263
  • 2
  • 17
  • 27
0

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