按钮不显示在Android Studio中的RecycleView下方

时间:2017-05-23 14:36:51

标签: android android-recyclerview

使用RecycleView设计布局以显示图像。在RecycleView下方添加了一个按钮,用于保存列表中的所选项目。在设计视图中和运行应用程序时,按钮不可见。无法追踪问题所在。代码是:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
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"
android:orientation="vertical"
android:fitsSystemWindows="true"
tools:context="com.example.user.recycleview.imagesview">

<android.support.design.widget.AppBarLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginBottom="4dp"
    android:theme="@style/AppTheme.AppBarLayout">

    <android.support.v7.widget.Toolbar
        android:id="@+id/toolbar"
        android:layout_width="match_parent"
        android:layout_height="?attr/actionBarSize"
        android:background="@color/titlebar"
        app:popupTheme="@style/AppTheme.PopupOverlay" />

</android.support.design.widget.AppBarLayout>

<view
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    class="android.support.v7.widget.RecyclerView"
    android:id="@+id/recycler_view" />

<Button
    android:id="@+id/button7"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_gravity="center_horizontal"
    android:background="@drawable/savebutton"
    android:text="@string/save"
    android:textColor="@color/white"
    android:textSize="12pt" />


<!--
Deleted fab element
-->

</LinearLayout>

3 个答案:

答案 0 :(得分:5)

1。RelativeLayout下面添加AppBarLayout,并将ButtonRecyclerView放在RelativeLayout内。

2。将属性android:layout_alignParentBottom="true"添加到Button,以便在bottom屏幕上对齐。

3。将属性android:layout_above="@id/button7"添加到RecyclerView,以便在Button上方显示。

更新您的布局,如下所示:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:fitsSystemWindows="true">

    <android.support.design.widget.AppBarLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginBottom="4dp"
        android:theme="@style/AppTheme.AppBarLayout">

        <android.support.v7.widget.Toolbar
            android:id="@+id/toolbar"
            android:layout_width="match_parent"
            android:layout_height="?attr/actionBarSize"
            android:background="@color/colorPrimary"
            app:popupTheme="@style/AppTheme.PopupOverlay" />

    </android.support.design.widget.AppBarLayout>

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <Button
            android:id="@+id/button7"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_alignParentBottom="true"
            android:text="Save"
            android:textColor="@android:color/black" />

        <android.support.v7.widget.RecyclerView
            android:id="@+id/recycler_view"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_above="@id/button7"/>

    </RelativeLayout>
</LinearLayout>

<强>输出:

enter image description here

答案 1 :(得分:0)

您将recyclerview视为#[naked] pub extern "C" fn dispatch_svc(){ Cpu::save_context(); let mut nr: u32 = 0; unsafe { asm!("ldr r0, [lr, #-4] bic $0, r0, #0xff000000":"=r"(nr)::"r0":"volatile") }; swi_service_routine(nr); Cpu::restore_context_and_return(); } 。因此它将占据整个屏幕,并且按钮将不可见。尝试使用下面提到的权重。

fill_parent

您可以使用权重来提供动态高度

android:layout_width="fill_parent"
android:layout_height="fill_parent"

或者您可以通过calculating the height of the screen

在java中动态设置高度
<LinearLayout ...
android:layout_weight="10">

   <view
        android:layout_width="fill_parent"
        android:layout_weight="9"
        android:layout_height="0px"
        class="android.support.v7.widget.RecyclerView"
        android:id="@+id/recycler_view"
        android:layout_marginBottom="130px"/>


    <Button
        android:layout_width="100px"
        android:layout_height="0px"
        android:text="Save"
        android:layout_weight="1"/>

</LinearLayout>

答案 2 :(得分:0)

由于您已将height的{​​{1}}设置为RecyclerView,因此无法看到该按钮。

有几种方法可以解决这个问题: 将fill_parent更改为height或设置

  1. wrap_content更改为height或设置固定的wrap_content
  2. 使用height作为基本布局,并使用RelativeLayout添加RecyclerView属性。因此layout_above不会将您的RecyclerView推到下面。
  3. 使用1st并添加margin / padding
  4. 注意:您应该使用Button,因为match_parent现已弃用