我有一个列表视图,我使用按钮+文本视图在列表视图中添加元素。我希望按钮位于列表视图下,并且如果列表包含足以滚动的元素,并且希望按钮执行alignParentBottom,以便他始终在屏幕上可见。 我有这个xml:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:id="@+id/lin"
android:layout_width="match_parent"
android:orientation="horizontal"
android:background="@drawable/my_button_xml_small"
android:layout_height="100dp">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/lbl_title"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center"
android:layout_marginEnd="0dp"
android:layout_marginRight="0dp"
android:layout_toStartOf="@+id/confirm_action"
android:layout_toLeftOf="@+id/confirm_action"
android:gravity="center"
android:text="Ajouter une option"
android:textSize="40sp" />
<Button
android:id="@+id/confirm_action"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
android:text="CONFIRMER"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</RelativeLayout>
</LinearLayout>
<EditText
android:id="@+id/lbl_name_options"
android:layout_width="match_parent"
android:layout_below="@id/lin"
android:hint="Entrez le nom de l'option"
android:gravity="center"
android:textSize="35dp"
android:layout_height="wrap_content" />
<ListView
android:id="@+id/list_options"
android:layout_width="match_parent"
android:layout_below="@id/lbl_name_options"
android:layout_above="@id/lbl_add_options"
android:layout_height="wrap_content">
</ListView>
<EditText
android:id="@+id/lbl_add_options"
android:layout_width="match_parent"
android:layout_alignParentLeft="true"
android:hint="Entrer une option à ajouter"
android:layout_alignParentBottom="true"
android:layout_toLeftOf="@id/btn_add_option"
android:layout_height="50dp" />
<Button
android:id="@+id/btn_add_option"
android:layout_width="wrap_content"
android:layout_alignBottom="@id/lbl_add_options"
android:text="Ajouter"
android:layout_alignParentRight="true"
android:layout_alignParentBottom="true"
android:layout_height="wrap_content" />
</RelativeLayout>
但是问题是,如果列表中没有元素,则该按钮为alignparentbottom,并且整个屏幕都一无所有
有人可以帮助我吗?
它给出了这个结果:
但是,当只有几个这样的项目时,我希望这样: 并且当有足够的项目可滚动时,应该是这样的:
编辑
它可以工作,但如果我不填充,则如下所示:
但是,如果我这样说,问题是键盘将隐藏列表中的很多元素:
但是我通过添加清单来解决它:android:windowSoftInputMode =“ adjustPan” 但是问题在于它推动了所有屏幕,因此我无法访问列表中的所有元素,因为它无法滚动
答案 0 :(得分:0)
您可以尝试像这样的布局权重:
<?xml version="1.0" encoding="utf-8"?>
<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/listView"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1" >
</ListView>
<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="0"
android:text="Button" />
</LinearLayout>
答案 1 :(得分:0)
您可以将listView和Buttom放在同一容器LinearLayout中并使用
只需提供ListView的“ layout_weight = 1”。
答案 2 :(得分:0)
您只需使用Constraint Layout即可,只需查看一点文档,它是如此简单易用
答案 3 :(得分:0)
请检查波纹管的布局,我已经按照您的期望做了一些改动。
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:background="@drawable/my_button_xml_small"
android:layout_height="match_parent">
<LinearLayout
android:id="@+id/lin"
android:layout_width="match_parent"
android:orientation="horizontal"
android:layout_height="100dp">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/lbl_title"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center"
android:layout_marginEnd="0dp"
android:layout_marginRight="0dp"
android:layout_toStartOf="@+id/confirm_action"
android:layout_toLeftOf="@+id/confirm_action"
android:gravity="center"
android:text="Ajouter une option"
android:textSize="40sp"/>
<Button
android:id="@+id/confirm_action"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
android:text="CONFIRMER"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</RelativeLayout>
</LinearLayout>
<EditText
android:id="@+id/lbl_name_options"
android:layout_width="match_parent"
android:layout_below="@id/lin"
android:hint="Entrez le nom de l'option"
android:gravity="center"
android:textSize="35dp"
android:layout_height="wrap_content"/>
<ListView
android:id="@+id/list_options"
android:layout_width="match_parent"
android:layout_below="@id/lbl_name_options"
android:paddingBottom="100dp"
android:clipToPadding="false"
android:layout_height="wrap_content"/>
<RelativeLayout
android:id="@+id/bottom_layout"
android:layout_width="match_parent"
android:background="#FFFFFF"
android:layout_alignBottom="@+id/list_options"
android:layout_height="wrap_content">
<EditText
android:id="@+id/lbl_add_options"
android:layout_width="match_parent"
android:layout_alignParentStart="true"
android:layout_toStartOf="@+id/btn_add_option"
android:hint="Entrer une option à ajouter"
android:layout_toLeftOf="@id/btn_add_option"
android:layout_height="50dp"/>
<Button
android:id="@+id/btn_add_option"
android:layout_width="wrap_content"
android:layout_alignParentEnd="true"
android:text="Ajouter"
android:layout_gravity="end"
android:layout_height="wrap_content"/>
</RelativeLayout>
</RelativeLayout>
class TTActivity : AppCompatActivity() {
var array = arrayOf("Melbourne", "Vienna")
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.tt)
val adapter = ArrayAdapter(this,
R.layout.item, array)
val listView:ListView = findViewById(R.id.list_options)
listView.setAdapter(adapter)
}
}