Поставить кнопки в нижней части экрана с макетом?
У меня есть следующий код, как мне сделать так, чтобы 3 кнопки были внизу?
<TextView
android:id="@+id/textView1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="60dp"
android:gravity="center"
android:text="@string/observer"
android:textAppearance="?android:attr/textAppearanceLarge"
tools:context=".asdf"
android:weight="1" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >
<Button
android:id="@+id/button1"
style="?android:attr/buttonStyleSmall"
android:layout_width="145dp"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal|center"
android:text="1" />
<Button
android:id="@+id/button2"
style="?android:attr/buttonStyleSmall"
android:layout_width="145dp"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal|center"
android:text="2" />
<Button
android:id="@+id/button3"
style="?android:attr/buttonStyleSmall"
android:layout_width="145dp"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal|center"
android:text="3" />
</LinearLayout>
9 ответов:
нужно обеспечить четыре вещи:
- снаружи
LinearLayout
иlayout_height="match_parent"
- внутри
LinearLayout
иlayout_weight="1"
иlayout_height="0dp"
- код
TextView
иlayout_weight="0"
- вы правильно установили гравитацию на своем внутреннем
LinearLayout: android:gravity="center|bottom"
обратите внимание, что
fill_parent
не означает "занять все доступное пространство". Однако, если вы используетеlayout_height="0dp"
Сlayout_weight="1"
, тогда вид будет занимать все доступное пространство (не могу сделать правильный макет с "fill_parent").вот код, который я быстро написал, который использует два LinearLayouts аналогично вашему коду.
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/db1_root" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <TextView android:id="@+id/textView1" android:layout_width="fill_parent" android:layout_height="wrap_content" android:gravity="center" android:text="@string/cow" android:layout_weight="0" android:textAppearance="?android:attr/textAppearanceLarge" /> <LinearLayout android:layout_width="match_parent" android:layout_height="0dip" android:layout_weight="1" android:gravity="center|bottom" android:orientation="vertical" > <Button android:id="@+id/button1" style="?android:attr/buttonStyleSmall" android:layout_width="145dp" android:layout_height="wrap_content" android:layout_gravity="center_horizontal|center" android:text="1" /> <Button android:id="@+id/button2" style="?android:attr/buttonStyleSmall" android:layout_width="145dp" android:layout_height="wrap_content" android:layout_gravity="center_horizontal|center" android:text="2" /> <Button android:id="@+id/button3" style="?android:attr/buttonStyleSmall" android:layout_width="145dp" android:layout_height="wrap_content" android:layout_gravity="center_horizontal|center" android:text="3" /> </LinearLayout> </LinearLayout>
результат выглядит примерно так:
можно использовать
RelativeLayout
и выровнять его в нижней части сandroid:layout_alignParentBottom="true"
создать относительный макет и внутри этого макета создать кнопку с этой строкой
android:layout_alignParentBottom="true"
сначала создайте имя файла как
footer.xml
положите этот код внутрь него.<?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="78dp" android:layout_gravity="bottom" android:gravity="bottom" android:layout_weight=".15" android:orientation="horizontal" android:background="@drawable/actionbar_dark_background_tile" > <ImageView android:id="@+id/lborder" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight=".14" android:background="@drawable/action_bar_left_button" android:src="@drawable/overlay" /> <ImageView android:id="@+id/unknown" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight=".14" android:background="@drawable/action_bar_left_button" android:src="@drawable/notcolor" /> <ImageView android:id="@+id/open" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight=".14" android:background="@drawable/action_bar_left_button" android:src="@drawable/openit" /> <ImageView android:id="@+id/color" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight=".14" android:background="@drawable/action_bar_left_button" android:src="@drawable/colored" /> <ImageView android:id="@+id/rborder" android:layout_width="0dp" android:layout_height="wrap_content" android:background="@drawable/action_bar_left_button" android:src="@drawable/frames" android:layout_weight=".14" /> </LinearLayout>
затем создать .xml и поместить этот код внутри него.:
<?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="@dimen/action_bar_height" android:layout_gravity="top" android:baselineAligned="true" android:orientation="horizontal" android:background="@drawable/actionbar_dark_background_tile" > <ImageView android:id="@+id/contact" android:layout_width="37dp" android:layout_height="wrap_content" android:layout_gravity="start" android:layout_weight=".18" android:scaleType="fitCenter" android:background="@drawable/action_bar_left_button" android:src="@drawable/logo"/> <ImageView android:id="@+id/share" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_gravity="start" android:layout_weight=".14" android:background="@drawable/action_bar_left_button" android:src="@drawable/share" /> <ImageView android:id="@+id/save" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight=".14" android:background="@drawable/action_bar_left_button" android:src="@drawable/save" /> <ImageView android:id="@+id/set" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight=".14" android:background="@drawable/action_bar_left_button" android:src="@drawable/set" /> <ImageView android:id="@+id/fix" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight=".14" android:background="@drawable/action_bar_left_button" android:src="@drawable/light" /> <ImageView android:id="@+id/rotate" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight=".14" android:background="@drawable/action_bar_left_button" android:src="@drawable/ic_menu_rotate" /> <ImageView android:id="@+id/stock" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight=".14" android:background="@drawable/action_bar_left_button" android:src="@drawable/stock" /> </LinearLayout>
и затем в
main_activity.xml
и поместить этот код внутри него :-<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="fill_parent" tools:context=".MainActivity" android:id="@+id/relt" android:background="@drawable/background" > <LinearLayout android:layout_width="fill_parent" android:layout_height="78dp" android:id="@+id/down" android:layout_alignParentBottom="true" > <include android:layout_width="fill_parent" android:layout_height="78dp" layout="@layout/footer" > </include> </LinearLayout> <ImageView android:id="@+id/view" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_above="@+id/down" android:layout_alignParentLeft="true" android:layout_alignParentRight="true" android:layout_below="@+id/inc" > </ImageView> <include layout="@layout/header" android:id="@+id/inc" android:layout_width="fill_parent" android:layout_height="50dp"></include>
удачи в кодировании :)
вы можете сделать это, взяв макет кадра в качестве родительского макета, а затем поместить линейный макет внутри него. Вот пример:
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" > <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical"> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:padding="5dp" android:textSize="16sp"/> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:padding="5dp" android:textSize="16sp" /> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:padding="5dp" android:textSize="16sp"/> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:padding="5dp" android:textSize="16sp"/> </LinearLayout> <Button android:id="@+id/button2" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_margin="10dp" android:layout_gravity="bottom" /> </FrameLayout>
<LinearLayout android:id="@+id/LinearLayouts02" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:gravity="bottom|end"> <TextView android:id="@+id/texts1" android:layout_height="match_parent" android:layout_width="match_parent" android:layout_weight="2" android:text="@string/forgotpass" android:padding="7dp" android:gravity="bottom|center_horizontal" android:paddingLeft="10dp" android:layout_marginBottom="30dp" android:bottomLeftRadius="10dp" android:bottomRightRadius="50dp" android:fontFamily="sans-serif-condensed" android:textColor="@color/colorAccent" android:textStyle="bold" android:textSize="16sp" android:topLeftRadius="10dp" android:topRightRadius="10dp"/> </LinearLayout>
просто добавьте layout_weight=" 1 " в ваш linearLayout, который имеет кнопки.
Edit : - позвольте мне сделать это просто
следуйте что-то вроде ниже, имя теги не может быть правильным, это просто идея
<LL>// Top Parrent LinearLayout <LL1 height="fill_parent" weight="1" "other tags as requirement"> <TV /><Butons /></LL1> // this layout will fill your screen. <LL2 height="wrap_content" weight="1" orientation="Horizontal" "other tags as requirement"> <BT1 /><BT2/ ></LL2> // this layout gonna take lower part of button height of your screen <LL/> TOP PARENT CLOSED