Android bottom button bar and scroll view with dialog theme

I am trying to show Android activity with:

  • topic of dialogue;
  • a title fixed at the top of the dialog box;
  • a button bar located at the bottom of the dialog box;
  • scroll in the middle.

The layout I wrote fulfills these criteria, except that the dialog always fills the full screen (see the vertical screenshot below).

This is my layout:

<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content" android:layout_height="wrap_content"> <TextView android:id="@+id/header" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_marginLeft="10dp" android:layout_marginRight="10dp" android:layout_marginTop="10dp" android:layout_marginBottom="10dp" android:gravity="center_vertical" android:textSize="18dip" android:textColor="#ffffff" android:text="Sample Layout" /> <LinearLayout android:id="@+id/controls" android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_alignParentBottom="true" style="@android:style/ButtonBar"> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" android:text="Yes" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" android:text="No" /> </LinearLayout> <ScrollView android:id="@+id/test" android:layout_below="@id/header" android:layout_above="@id/controls" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_marginBottom="5dp" android:layout_marginLeft="5dp" android:layout_marginRight="5dp"> <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer dui odio, convallis vitae suscipit eu, tincidunt non mi. Vestibulum faucibus pretium purus vel adipiscing. Morbi mattis molestie risus vitae vehicula. [...]" /> </ScrollView> </RelativeLayout> 

In addition, the activity has the @android:style/Theme.Dialog and android:windowNoTitle .

I'm not sure I understand why this layout is expanding to fill the entire screen. None of the views has a layout height set to fill_parent ; parent layout is not set to fill_parent .

Does anyone know if it is possible that I want to do, and if so, how to do it?

My current layout is horizontal

Layout in horizontal mode.

My current layout is vertical

Layout in vertical mode.

+4
source share
2 answers

I have an Activity that is very similar to yours. I did this a while ago, so I really don’t remember why I did it and what, but I think that I am trying to achieve what you are trying to do. Here is my code:

 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/info_root" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" android:layout_gravity="bottom" android:background="@color/color2"> <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:background="@color/color1"> <TextView android:id="@+id/infos_titre" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_margin="12dip" android:textSize="20dip" android:textColor="@color/color2" android:gravity="center" android:background="@color/color1"> </TextView> </LinearLayout> <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="1"> <ScrollView android:layout_width="fill_parent" android:layout_height="wrap_content"> <LinearLayout android:id="@+id/infos_LL" android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="vertical" android:gravity="center_vertical"> <TextView android:id="@+id/infos_text" android:layout_width="fill_parent" android:layout_height="wrap_content" android:textSize="16dip" android:padding="4dip" android:textColor="@color/color1" android:lineSpacingMultiplier="1.1" android:autoLink="web"> </TextView> </LinearLayout> </ScrollView> </LinearLayout> <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:background="@color/color1" android:paddingTop="6dip"> <Button android:id="@+id/infos_remarquebutton" android:text="Faire une remarque" android:drawableLeft="@drawable/happy" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_weight="1" android:textColor="@color/buttontext_color"> </Button> <Button android:id="@+id/infos_partagerbutton" android:text="Partager" android:layout_width="fill_parent" android:layout_height="wrap_content" android:drawableLeft="@drawable/ic_menu_share" android:layout_weight="1" android:textColor="@color/buttontext_color"> </Button> </LinearLayout> 

Do Not Break Frenglish Lures ...

So, I think the main trick was to set the ScrollView inside LinearLayout. I also gave weight 1 to this LinearLayout (I don’t remember why ...). Also, the top layout is a LinearLayout, not a relative layout like in your code, but I don’t think it will change anything, although I am not familiar with RelativeLayouts.

Hope this helps!

+10
source

I think, since you gave android: layout_alignParentBottom = "true" for a linear layout The button moves to the bottom and looks like this.

So, it is better to remove android: layout_alignParentBottom = "true" and use android: layout_marginTop = "some Values"

Try this, please .. Thanks ..

0
source

Source: https://habr.com/ru/post/1343327/


All Articles