Плавающая кнопка действия, блокирующая другие компоненты

Новый Material Design of Google рекомендует использовать кнопки с плавающим действием, чтобы привлечь внимание пользователя к основному действию на этом экране. Это довольно много примеров в виде списка.

Теперь предположим, что в вашем представлении списка имеется достаточно элементов для заполнения экрана, что делает прокрутку невозможной. Если в ваших элементах списка есть определенный компонент, с которым пользователь может взаимодействовать, например, переключатель или любимая звезда, возможно, что кнопка с плавающим действием блокирует этот компонент. Как мы должны справляться с этим делом?

EDIT : Это всегда происходит с последним пунктом в вашем списке

Solutions Collecting From Web of "Плавающая кнопка действия, блокирующая другие компоненты"

Добавьте пустой вид с той же высотой, что и плавающая кнопка в нижнем колонтитуле списка. Поэтому, когда вы просматриваете свой список, последний элемент появится, а плавающая кнопка не скроет последний элемент списка. Это простое и быстрое решение.

Теперь у меня была эта проблема, и я решил это так:

public void addBlankSpace(ListView listView) { Space space = new Space(listView.getContext()); space.setMinimumHeight(Core.dpToPx(50)); listView.addFooterView(space); } 

И я думаю, что всегда есть лучший способ. Как если бы вам это понадобилось. И только тогда, чтобы отобразить его. Но на данный момент этот простой код работает отлично.

И здесь функция преобразования:

 public static int dpToPx(int dp) { return (int)(dp * Resources.getSystem().getDisplayMetrics().density); } 

Или мы можем просто добавить некоторые дополнения:

 listView.setPadding(0, 0, 0, Core.dpToPx(50)); 

При загрузке списка вы можете создать флаг и найти, является ли элемент в списке последним видимым элементом на экране, чем скрыть плавающую кнопку.

Используйте это, чтобы найти последний видимый элемент

 int currentPosition = list.getLastVisiblePosition(); 

Вы получите последний номер элемента item.ie, если последний элемент отображается в вашем списке последним, чем возвратит значение currentPosition = 7;

Как только вы получите количество предметов, которые соответствуют вашему экрану, теперь проверьте флаг

 if(listAdapterItemsArray.get(position) == currentPosition) { //hide button } else { //nothing } 

Вы можете установить положение кнопки действия google влево вверх, используя

  `android:layout_gravity="top|left"` 

Таким образом, он выглядит хорошо и ничего не скрывает.

Я просто делаю то, что думаю, что приложение Google Gmail делает и добавляет дополнение к recyclerView (или списку).

 <android.support.v7.widget.RecyclerView android:id="@+id/my_recyclerview" android:layout_width="match_parent" android:layout_height="match_parent" android:clipToPadding="false" android:paddingBottom="100dp" />