Ich möchte eine Schaltfläche am unteren Rand der Listenansicht haben.
Wenn ich relativeLayout / FrameLayout verwende, wird es ausgerichtet, aber listView geht bis zum Ende.
(Hinter dem Knopf unten)
FrameLayout:
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<ListView
android:id="@+id/listview"
android:layout_width="match_parent"
android:layout_height="wrap_content"
/>
<FrameLayout
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_alignParentBottom="true">
<Button
android:id="@+id/btnButton"
android:text="Hello"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="bottom" />
</FrameLayout>
</FrameLayout>
RelativeLayout:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<ListView
android:id="@+id/listview"
android:layout_width="match_parent"
android:layout_height="match_parent"
/>
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true">
<Button
android:id="@+id/btnButton"
android:text="Hello"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="bottom" />
</RelativeLayout>
</RelativeLayout>
Die obigen zwei Codes funktionieren nur wie das erste Bild. Was ich will, ist das zweite Bild.
Kann jemand helfen?
Vielen Dank.
android:weight
sollte aber sein:android:layout_weight
android:orientation="vertical"
Gibt es jedoch einen Grund, warum es nur mit und nicht mit der angegebenen horizontalen oder nicht angegebenen Ausrichtung funktioniert?<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="#ffffff" > <ListView android:id="@+id/ListView01" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1"> </ListView> <FrameLayout android:id="@+id/FrameLayout01" android:layout_width="fill_parent" android:layout_height="wrap_content"> <Button android:id="@+id/Button01" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="button" android:layout_gravity="center_horizontal"> </Button> </FrameLayout> </LinearLayout>
Hier ist das Design, das Sie suchen. Versuch es.
quelle
Ich brauchte zwei Knöpfe nebeneinander unten. Ich habe ein horizontales lineares Layout verwendet, aber das Zuweisen
android:layout_height="0dp"
undandroid:layout_weight="0"
für das lineare Layout der Schaltflächen hat nicht funktioniert. Das Zuweisenandroid:layout_height="wrap_content"
nur für das lineare Layout der Schaltflächen erfolgte. Hier ist mein Arbeitslayout:<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <ListView android:id="@+id/listView1" android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1" /> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal"> <Button android:id="@+id/new_button" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:text="New" /> <Button android:id="@+id/suggest_button" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:text="Suggest" /> </LinearLayout> </LinearLayout>
quelle
RelativeLayout
ignoriert seine untergeordneten Elementeandroid:layout_width
oderandroid:layout_height
Attribute, wenn die untergeordneten Elemente Attribute haben, die ihreleft
undright
/top
undbottom
Werte richtig definieren .Um das Ergebnis auf dem rechten Bild zu erzielen und die Liste über der Schaltfläche anzuzeigen, sollte Ihr Layout folgendermaßen aussehen:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <android.support.v7.widget.RecyclerView android:id="@android:id/list" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_above="@android:id/button1" android:layout_alignParentTop="true"/> <Button android:id="@android:id/button1" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:text="@android:string/ok"/> </RelativeLayout>
Der Schlüssel ist zu definieren
android:layout_alignParentTop
(definierttop
Wert) undandroid:layout_above
(definiertbottom
Wert) in IhremRecyclerView
. Auf diese WeiseRelativeLayout
wird ignoriertandroid:layout_height="match_parent"
und dasRecyclerView
wird über dem platziertButton
.Stellen Sie außerdem sicher, dass Sie prüfen
android:layout_alignWithParentIfMissing
, ob Sie ein komplexeres Layout haben und diese Werte noch definieren müssen.quelle
Ich verwende Xamarin Android und meine Anforderung entspricht genau der von William T. Mallard (siehe oben), dh einer ListView mit zwei nebeneinander angeordneten Schaltflächen. Die Lösung ist, dass diese Antwort in Xamarin Studio jedoch nicht funktioniert hat. Als ich die Höhe der ListView auf "0dp" stellte, verschwand die ListView einfach.
Mein funktionierender Xamarin-Android-Code lautet wie folgt:
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> <ListView android:id="@+id/ListView1" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="1" android:layout_above="@+id/ButtonsLinearLayout" /> <LinearLayout android:id="@id/ButtonsLinearLayout" android:layout_height="wrap_content" android:layout_width="fill_parent" android:orientation="horizontal" android:layout_alignParentBottom="true"> <Button android:id="@+id/Button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" /> <Button android:id="@+id/Button2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" /> </LinearLayout> </RelativeLayout>
Ich habe ButtonsLinearLayout am unteren Bildschirmrand ausgerichtet und die ListView so eingestellt, dass sie über ButtonsLinearLayout liegt.
quelle
@jclova Eine weitere Möglichkeit besteht
layout-below=@+id/listviewid
darin, das relative Layout zu verwendenquelle
In Ihrem relativen Layout ist die Höhe der Listenansicht
match_parent
fill_parent (für 2.1 und älter). Wenn Sie also das relative Layout verwenden möchten, deklarieren Sie zuerst Ihre Schaltfläche und dann Ihre Listenansicht. Stellen Sie die Position der Listenansicht wie über Ihrer Schaltflächen-ID ein Willst du die Schaltfläche immer unten, dann mache es ausrichtenParentBottom .. Snippet ist<RelativeLayout android:layout_width="fill_parent" android:layout_height="fill_parent" android:id="@+id/rl1"><Button android:layout_width="MATCH_PARENT" android:layout_height="WRAP_CONTENT" /><ListView android:layout_width="MATCH_PARENT" android:layout_height="0" android:layout_above="@id/listview"/></RelativeLayout>
Dies verhindert, dass Ihre Listenansicht den gesamten Platz einnimmt und Ihre Schaltfläche angezeigt wird.
quelle
Dies ist die beste und einfachste Lösung für das Problem. Fügen
android:layout_above="@id/nameOfId"
Sie einfach das Layout hinzu, das Sie in Bezug auf dieses Layout verschieben möchten.<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.sumeru.commons.activity.CommonDocumentUploadActivity"> <ListView android:id="@+id/documentList" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_above="@id/verifyOtp" /> <com.sumeru.commons.helper.CustomButton android:id="@+id/verifyOtp" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:text="@string/otp_verification" /> </RelativeLayout>
quelle