GreenBee
GreenBee

Reputation: 3101

SwipeRefreshLayout + another view

I have my layout setup as follows:

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

    <include layout="@layout/my_toolbar" />

    <android.support.v4.widget.SwipeRefreshLayout
        android:id="@+id/swipe_refresh"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
        <com.my.SubView
            android:id="@+id/my_list_subview"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="@color/white" />
    </android.support.v4.widget.SwipeRefreshLayout>

    <TextView
        android:id="@+id/text_content"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:padding="@dimen/padding_medium"
        android:layout_margin="@dimen/padding_medium"
        android:text="Hello"
        android:textSize="14sp"
        android:maxLines="3"/>

</LinearLayout>

The problem is that the SwipeRefreshLayout takes up the entire screen and the textview doesn't show up at all.

Blue line is where the textview is

The blue line in the above image is where the text view is. Is there anything I am missing? This seems to be so simple a problem, its ludicrous!

Image 2 in response to the answer by @Tomarenter image description here

Upvotes: 4

Views: 6331

Answers (3)

Javid Sattar
Javid Sattar

Reputation: 846

  <androidx.constraintlayout.widget.ConstraintLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent">

        <androidx.swiperefreshlayout.widget.SwipeRefreshLayout
           android:id="@+id/srl_reload_list"
           android:layout_width="0dp"
           android:layout_height="0dp"
           app:layout_constraintBottom_toBottomOf="parent"
           app:layout_constraintLeft_toLeftOf="parent"
           app:layout_constraintRight_toRightOf="parent"
           app:layout_constraintTop_toBottomOf="parent">

        <androidx.recyclerview.widget.RecyclerView
            android:id="@+id/recyclerView_openOrderList"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:fitsSystemWindows="true" />
    </androidx.swiperefreshlayout.widget.SwipeRefreshLayout>
</androidx.constraintlayout.widget.ConstraintLayout>

Upvotes: 0

GreenBee
GreenBee

Reputation: 3101

As I mentioned above, I worked it out with ConstraintLayout as below. I do not know why I need to use a large bottom margin and padding in the swipe refresh layout for it to sit above the text. Without these, it doesn't work!

<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@color/white"
    xmlns:app="http://schemas.android.com/apk/res-auto">

    <include layout="@layout/toolbar"
        android:id="@+id/my_toolbar"
        android:layout_height="wrap_content"
        android:layout_width="0dp"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintEnd_toEndOf="parent"/>

    <android.support.v4.widget.SwipeRefreshLayout
        android:id="@+id/swipe_refresh"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_marginBottom="@dimen/padding_large"
        android:paddingBottom="@dimen/padding_super_large"
        app:layout_constraintTop_toBottomOf="@+id/my_toolbar"
        app:layout_constraintBottom_toTopOf="@+id/text_content"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintEnd_toEndOf="parent">
        <com.my.SubView
            android:id="@+id/my_list_subview"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:background="@color/white"/>
    </android.support.v4.widget.SwipeRefreshLayout>

    <EditText
        android:id="@+id/text_content"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:background="@color/white"
        android:hint="@string/write_message"
        android:textSize="14sp"
        android:maxLines="3"
        android:padding="@dimen/padding_medium"
        android:paddingLeft="@dimen/padding_large"
        app:layout_constraintTop_toBottomOf="@+id/swipe_refresh"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintBottom_toBottomOf="parent"
        tools:visibility="visible"
        tools:layout_editor_absoluteX="0dp" />

</android.support.constraint.ConstraintLayout>

Upvotes: 1

Tomer Shemesh
Tomer Shemesh

Reputation: 13405

try this

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <include layout="@layout/my_toolbar"
        android:id="@+id/top_layout"/>

    <android.support.v4.widget.SwipeRefreshLayout
        android:id="@+id/swipe_refresh"
        android:layout_width="match_parent"
        android:layout_above="@+id/text_content"
        android:layout_below="@+id/top_layout"
        android:layout_height="wrap_content">
        <com.my.SubView
            android:id="@+id/my_list_subview"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="@color/white" />
    </android.support.v4.widget.SwipeRefreshLayout>

    <TextView
        android:id="@+id/text_content"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:padding="@dimen/padding_medium"
        android:layout_margin="@dimen/padding_medium"
        android:text="Hello"
        android:textSize="14sp"
        android:layout_alignParentBottom="true"
        android:maxLines="3"/>

</RelativeLayout>

Upvotes: 2

Related Questions