列表视图下的按钮

时间:2019-07-15 17:27:49

标签: android listview

我有一个列表视图,我使用按钮+文本视图在列表视图中添加元素。我希望按钮位于列表视图下,并且如果列表包含足以滚动的元素,并且希望按钮执行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,并且整个屏幕都一无所有

有人可以帮助我吗?

它给出了这个结果:

enter image description here

但是,当只有几个这样的项目时,我希望这样: enter image description here 并且当有足够的项目可滚动时,应该是这样的: enter image description here

编辑

它可以工作,但如果我不填充,则如下所示:

enter image description here

但是,如果我这样说,问题是键盘将隐藏列表中的很多元素:

enter image description here

但是我通过添加清单来解决它:android:windowSoftInputMode =“ adjustPan” 但是问题在于它推动了所有屏幕,因此我无法访问列表中的所有元素,因为它无法滚动

4 个答案:

答案 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>

less item screenshot more items screenshot 活动如下:您可以在此处添加更多项目以检查全屏模式。

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)
        }
    }