2016-07-25 6 views
8

Я помещаю карту в прокрутку, мы ожидаем увидеть, что внизу будет отображаться граница (см. Рис. Ниже). Но его нет. Проблема в том, что я не могу прокручивать нижнюю часть, чтобы увидеть границу карты.Карточка нижнего края CardView отключена внутри ScrollView android

Все решения на SO - это изменить layout_margins на paddings, но это не так для карт, если мы хотим показать границу. Я в основном пробовал все. Но все равно не работает. scroll to bottom cannot see the border

Изображение 1. прокрутки вниз не может видеть границу

we can see the top border

Рисунок 2. Мы видим, верхняя граница

Ниже код XML

<LinearLayout 
xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:custom="http://schemas.android.com/apk/res-auto" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:orientation="vertical" 
> 
    <ScrollView 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:fillViewport="true"> 

      <android.support.v7.widget.CardView 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:layout_margin="8dp"> 
        <LinearLayout 
         android:layout_width="match_parent" 
         android:layout_height="wrap_content" 
         android:orientation="vertical" 
         > 
        ... 
        </LinearLayout> 
      </CardView> 
    </LinearLayout> 

ссылки : ScrollView doesn't scroll to the bottom

ScrollView cuts off the top and leaves space at the bottom

I can't show LinearLayout at bottom to scroll view

Android ScrollView refuses to scroll to bottom

+1

Вы можете приложить скриншот, чтобы помочь нам лучше понять, что происходит? – Vucko

+0

@ Vucko screen shot добавлен, спасибо – Cheng

ответ

4

Одно решение, которое я только что нашел, чтобы обернуть CardView с LinearLayout или RelativeLayout и установите его заполнение. Например, если вам нужен эффект тени в cardView, скажем 8dp, вы можете установить 4dp-дополнение вашего LinearLayout или RelativeLayout и 4dp layout_margin CardView.

+0

да, но добавление дополнительного слоя займет дополнительное время, чтобы пройти дерево просмотра, которое не оптимизировано. Ну, если вас не волнует производительность, это должно сработать – Cheng

+0

Мне даже не пришлось устанавливать дополнение. Просто добавлена ​​линейная компоновка, и она решила проблему. –

9

Я столкнулся с той же проблемой, и должен был сделать следующее (ключ является LinearLayout обертки cardview где я добавил paddingBottom):

<ScrollView 
    android:id="@+id/item_scrollview" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:scrollbars="none" 
    tools:visibility="visible"> 

    <LinearLayout 
     android:id="@+id/item_wrapper_layout" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_margin="@dimen/content_margin" 
     android:paddingBottom="32dp" 
     android:orientation="vertical"> 

     <android.support.v7.widget.CardView 
      android:id="@+id/item_cardview" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      card_view:cardBackgroundColor="@color/colorPrimary" 
      card_view:cardCornerRadius="4dp" 
      card_view:cardUseCompatPadding="true"> 

Добавление LinearLayout обертки вокруг Карточки - это то, что сработало для меня.

Также обратите внимание, что мне пришлось добавить card_view: cardUseCompatPadding = "true" на карте, чтобы получить тень границы, выглядящую правильно.

Вот конечный результат, когда красное поле показывает, где добавлено дополнение, когда карта открывается и прокручивается вверх.

screenshot

+0

Я не большой поклонник добавления дополнительного слоя для обертывания карты, потребуется дополнительное время, чтобы пересечь дерево представлений, особенно верно, когда представление глубокое. Если вы не заботитесь о производительности, это должно работать – Cheng

+0

Добавление LinearLayout в качестве обертки не приведет к огромному увеличению производительности в этом дизайне. Если это все было в RecyclerView, я мог видеть, что это может быть проблемой. Такое мнение не должно быть таким глубоким, как обычно, выше карты. –

+0

По-видимому, проблема с маржой или дополнением, если вы видите снимок экрана выше. Полоса прокрутки больше не прокручивается, даже если она доходит до нижней. Поэтому исправление этой проблемы с добавлением/маржи является правильным способом. Обертывание linearlayout просто рубить, или IMHO, это работает по совпадению. – Cheng