user2913402
user2913402

Reputation:

Cardview hiding some elements, Scrollbars not working

I have this layout file for a fragment that is not displaying the last textview element, tv_notice_date, anytime the content exceeds the screen height. I added a scrollbar to the cardview, but the scrollbar is not displaying.

fragment_notice.xml

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

    <android.support.v7.widget.CardView
        android:id="@+id/card_view"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:scrollbars="vertical"
        android:layout_margin="4dp"
        card_view:cardCornerRadius="4dp"
        card_view:cardElevation="1dp">

       <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:orientation="vertical">
            <!--Title of notice-->
            <TextView
                android:id="@+id/tv_notice_title"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:padding="10dp"
                android:text="Title of Notice"
                android:layout_gravity="center"
                android:textAppearance="?android:textAppearanceLarge"
                android:textSize="20sp"
                android:textStyle="bold"/>

          <TextView
               android:id="@+id/tv_notice_summary"
               android:layout_width="match_parent"
               android:layout_height="match_parent"
               android:padding="10dp"
               android:text="@string/notice_body"
               android:textAppearance="?android:textAppearanceMedium"
               android:textSize="15sp"/>
        <!--Date of Notice-->
        <TextView
            android:id="@+id/tv_notice_date"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:padding="5dp"
            android:text="Mon, Nov 28, 2016. 8:56 AM"
            android:textColor="#0D47A1"/>
    </LinearLayout>
</android.support.v7.widget.CardView>
</LinearLayout>

strings.xml

<string name="notice_body">
    Summary of the very first post...Summary of the very first post...Summary of the very first post...
    Summary of the very first post...Summary of the very first post...Summary of the very first post...
    Summary of the very first post...Summary of the very first post...Summary of the very first post...
    Summary of the very first post...Summary of the very first post...Summary of the very first post...
    Summary of the very first post...Summary of the very first post...Summary of the very first post...
    Summary of the very first post...Summary of the very first post...Summary of the very first post...
    Summary of the very first post...Summary of the very first post...Summary of the very first post...
    Summary of the very first post...Summary of the very first post...Summary of the very first post...
    Summary of the very first post...Summary of the very first post...Summary of the very first post...
    Summary of the very first post...Summary of the very first post...Summary of the very first post...
</string>

I want to display a scrollbar anytime the content is more so that the date textview can be displayed.

Upvotes: 0

Views: 382

Answers (2)

foxanna
foxanna

Reputation: 1570

To have a scroll outside of a card you can use the following structure:

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

    <android.support.v7.widget.CardView
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical">
            <!-- your content here -->
        </LinearLayout>
    </android.support.v7.widget.CardView>
</ScrollView>

You can have a scroll inside a card, but in that case a card will always occupy the full screen height even if there is not much content:

<android.support.v7.widget.CardView 
    android:layout_width="match_parent"
    android:layout_height="match_parent">

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

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical">
            <!-- your content here -->
        </LinearLayout>
    </ScrollView>
</android.support.v7.widget.CardView>

Upvotes: 1

Nikesh Maharjan
Nikesh Maharjan

Reputation: 183

I am not sure but if that's not working then you can try like

LinearLayout
....
...>
<ScrollView
.....
...>
<CardView
.... 
....>
....
other views and Viewgroups
....
</CardView
</ScrollView>
</LinearLayout>

Post back what you get!! Let us know

Upvotes: 0

Related Questions