Reputation: 357
So I have an ExpandableListView and basically I have some text (person's name), and then I want a button on the same row (towards the right side if possible). Currently, this code in my XML file it has the text on one line, and then the button on the next line, I've played around with it but can't figure out how to get it both on one line.
LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="55dip"
android:orientation="horizontal"
android:weightSum="1" >
<TextView
android:id="@+id/lblListItem"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textSize="17dp"
android:paddingTop="5dp"
android:paddingBottom="5dp"
android:paddingLeft="?android:attr/expandableListPreferredChildPaddingLeft" />
<Button
style="?android:attr/buttonStyleSmall"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:focusable="false"
android:focusableInTouchMode="false"
android:layout_weight="0.8"
android:textSize="11dp"
android:text="Checkout"
android:id="@+id/checkout" />
</LinearLayout>
Upvotes: 0
Views: 4815
Reputation: 5973
This will do the trick.
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="55dip"
android:orientation="horizontal" // Edited here
android:weightSum="1" > // here
<TextView
android:id="@+id/lblListItem"
android:layout_width="match_parent" //and here
android:layout_height="35dp"
android:focusable="false"
android:focusableInTouchMode="false"
android:gravity="center_vertical"
android:layout_weight="0.2" // here
android:paddingLeft="?android:attr/expandableListPreferredChildPaddingLeft" />
<Button
style="?android:attr/buttonStyleSmall"
android:layout_width="match_parent" // and here
android:layout_height="wrap_content"
android:focusable="false"
android:focusableInTouchMode="false"
android:layout_weight="0.8" // and here
android:textSize="12dp"
android:text="Checkout"
android:id="@+id/checkout" />
</LinearLayout>
Make sure of 2 things when using weightsum:
if orientation is horizontal, width of all child views to be displayed in a row will need to have "match_parent" and some value for layout_weight.
0.2 will give 80% of horizontal width of parent and 0.8 will give 20%.
Upvotes: 4
Reputation: 44571
You have
android:orientation="vertical"
in your parent LinearLayout
which stacks elements from top to bottom (naturally). Remove that line (since horizontal
is the default orientation for LinearLayout
). Then you would need to use weight
or margin
to get it positioned where you want.
Another option would be to replace your LinearLayout
with a RelativeLayout
. This will allow you to use android:alignParentRight="true"
on your Button
to put it on the right side of the screen (RelativeLayout
puts Views
at the top-left by default).
Upvotes: 1