ScrollView исчезающий край с фоновым изображением: текст обрезан

#android #background-image #scrollview #tablelayout

#Android #фоновое изображение #scrollview #табличное описание

Вопрос:

У меня есть TableLayout внутри ScrollView с фоновым изображением. Проблема, с которой я сталкиваюсь, заключается в том, что в пользовательском фоновом изображении положение исчезающего края выходит за белую границу фонового изображения. Это не очень приятно. Как я могу сделать так, чтобы исчезающий край появлялся перед белой рамкой?

http://img444.imageshack.us/img444/6775/fadingedge.png

XML

 <ScrollView android:id="@ id/ScrollView01"
android:layout_width="fill_parent"
android:layout_height="240dip"
android:layout_alignParentLeft="true"
android:layout_marginRight="9dip"
android:layout_marginLeft="10dip"
android:background="@drawable/bg"
>
    <TableLayout android:id="@ id/table" android:layout_width="fill_parent"
    android:layout_marginBottom="10dip"  android:layout_marginTop="10dip"    
    android:layout_height="fill_parent">

    <TableRow android:id="@ id/TableRow01" android:layout_marginLeft="20dip"        
    android:layout_marginTop="10dip" android:layout_width="wrap_content" 
    android:layout_height="wrap_content">
    </TableRow>

    </TableLayout>

</ScrollView>
  

Комментарии:

1. попробуйте использовать android: fadingEdgeLength =»10dp» для вашего ScrollView.

Ответ №1:

Является ли ваше фоновое изображение 9-патчем? 9-патчи могут определять отступы с их областью содержимого. Это можно использовать для заполнения области, которая фактически прокручивается, что изменит положение краев затухания. Это также более удобный подход, чем определение отступов вручную, поскольку отступы визуально зависят от используемого вами фонового ресурса. Для определения этих параметров остается только одно место.

Обратите внимание, что начиная с Android 4.0 мы начали отказываться от использования fading edge, и когда вы настраиваете API 14 или выше, они по умолчанию отключены. Нашей команде UX не нравится, как они визуально сочетаются с другими элементами пользовательского интерфейса, и они непомерно дороги для рендеринга в режиме аппаратного ускорения на некоторых распространенных архитектурах мобильных графических процессоров.

Комментарии:

1. у меня не 9-патч. Я думаю, что использование отступов — единственный способ на данный момент.

2. Для такого контейнера действительно должен быть 9-патч, если вы всегда не можете гарантировать, что это поле будет одинакового размера на всех устройствах. 9-исправления позволяют легко изменять размер контейнеров этого типа и позволяют системе компоновки Android адаптироваться к различным размерам экрана.

Ответ №2:

Добавьте android:paddingTop="10dip" и android:paddingBottom="10dip" к ScrollView элементу. Таким образом, элемент в этом контейнере (ваша таблица здесь) будет иметь «внешнее (верхнее / нижнее) поле».

Комментарии:

1. это прекрасно справляется с задачей! Я играл с полями.. забыл о существовании заполнения