Align buttons inside a TableRow
Solution 1
I hope this helps:
<TableRow
android:id="@+id/tableRow1"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_width="wrap_content">
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:text="@string/stringtxt1"></Button>
<Button
android:id="@+id/button2"
android:layout_width="wrap_content"
android:text="@string/stringtxt2"
android:layout_height="wrap_content"
android:layout_gravity="center|center_horizontal"></Button>
</TableRow>
Solution 2
I posted my code, I hope that will help others users to resolve theirs problems (center content). I wanted to center two buttons in table row, here is my code, which solve this problem:
we indicate which columns will be stretched in prop android:strechColumns="a,b.." using comma-delimited list
<TableLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/buttonGroup"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:stretchColumns="0,1" >
<TableRow>
<Button
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/button1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/button1Name"
android:layout_gravity="right"/>
<Button
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/button2"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/button2Name"
android:layout_gravity="left"/>
</TableRow>
</TableLayout>
I hope that it will help. Sorry for my english :/
Solution 3
For centering a single button on a single row:
<TableRow android:id="@+id/rowNameHere"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:gravity="center">
<Button android:id="@+id/btnDoStuff"
android:text="Do Stuff" />
</TableRow>
After reviewing the above answers, I grabbed a few things from each answer and this worked for me.
Solution 4
Remove this line <TableRow android:layout_gravity="center">
And give android:fill_containt
in table row for both height & width
EDITED ANSWER: Well, I'm so sorry for the last posts spelling mistake
Through XML it seems impossible for TableLayout
. You need to set this UI in code in oncreate.
In your java file you can set those by using below.
playGame.setWidth(ScreenWidth()/2-var);
noPlayGame.setWidth(ScreenWidth()/2-var);
here var
can be used to set the distance between these 2 buttons like 10 or 30.
Also, your xml will get change as follows:
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/ButtonsTable"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TableRow
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:gravity="center">
<Button
android:text="yes"
android:id="@+id/playGame"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"/>
<Button
android:text="no"
android:id="@+id/noPlayGame"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"/>
</TableRow>
</TableLayout>
The method ScreenWidth()
can be used for getting width of the screen through these methods
private int ScreenWidth() {
DisplayMetrics dm=new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);
String width=""+dm.widthPixels;
return Integer.parseInt(width);
}
Solution 5
I added two dummy textviews to align my button in the center.
<TableRow>
<TextView
android:text=""
android:layout_weight=".25"
android:layout_width="0dip"
/>
<Button
android:id="@+id/buttonSignIn"
android:text="Log In"
android:layout_height="wrap_content"
android:layout_weight=".50"
android:layout_width="0dip"
/>
<TextView
android:text=""
android:layout_weight=".25"
android:layout_width="0dip"
/>
</TableRow>
VansFannel
I'm software architect, entrepreneur and self-taught passionate with new technologies. At this moment I am studying a master's degree in advanced artificial intelligence and (in my free time ) I'm developing an immersive VR application with Unreal Engine. I have also interested in home automation applying what I'm learning with Udacity's nanodegree course in object and voice recognition.
Updated on July 08, 2020Comments
-
VansFannel almost 4 years
I'm developing an Android application.
I have this:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="200px" android:orientation="vertical"> <TextView android:id="@+id/gameTitle" android:layout_width="fill_parent" android:layout_height="wrap_content" android:focusable="false" android:focusableInTouchMode="false" android:gravity="left" android:layout_margin="5px" android:text="aaaaa"/> <TextView android:id="@+id/gameDescription" android:layout_width="fill_parent" android:layout_height="wrap_content" android:focusable="false" android:focusableInTouchMode="false" android:gravity="left" android:layout_margin="5px" android:typeface="sans" android:textSize="16sp" android:textStyle="bold" android:text="dddddd"/> <TableLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/ButtonsTable" android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="horizontal"> <TableRow android:layout_width="fill_parent" android:layout_height="fill_parent"> <Button android:text="@string/yes" android:id="@+id/playGame" android:layout_width="wrap_content" android:layout_height="wrap_content"/> <Button android:text="@string/no" android:id="@+id/noPlayGame" android:layout_width="wrap_content" android:layout_height="wrap_content"/> </TableRow> </TableLayout> </LinearLayout>
I want to put playGame button in the left side of the center, and noPlayGame button in the right side of the center.
Now, both appear aligned to the left of the TableRow.
How can I do this?
Thank you.
EDIT: I've added the complete layout and the modifications suggested by Ashay.
2nd EDIT:
THE SOLUTION
I've added toTableLayout
the following:android:stretchColumns="0,1"
. Now the buttons are center aligned but they fill their entiry column!!! -
VansFannel over 13 yearsandroid:fill_containt? I haven't found this "property" on android's documentation.
-
VansFannel over 13 yearsI have edit the question adding in more details. Your answer doesn't work for me.
-
Kennethvr over 13 yearsis this the only solution? I don't think this is the correct one.... adding empty textviews to center a button?
-
Sam over 4 yearsThank you!!
android:gravity="end"
works for me to align button to the right of table row. -
dyslexicanaboko over 4 yearsI'm glad I could help. I'm shocked that this answer is still relevant after so many years.