2015-03-31 2 views
12

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

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

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

ответ

6

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

0

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

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

int currentPosition = list.getLastVisiblePosition(); 

вы получите последний номер item.i.e если седьмой элемент является последним видимым в списке, чем он будет возвращать значение currentPosition = 7;

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

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

Что произойдет, если у вас есть только 7 элементов в списке, все они отображаются, список нельзя прокручивать, но вы скрываете кнопку, чтобы она не перекрывала последний элемент? – stan0

+0

Точно. Просто спрячьте кнопку, когда список достаточно подходит на экране. –

+0

Разве вам не хватало бы функциональности кнопки? – stan0

1

Я только что этот вопрос сейчас, и я решил это так:

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)); 
+1

Почему бы просто не использовать XML: 'paddingBottom =" 50dp "'? – Natix

0

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

 `android:layout_gravity="top|left"` 

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

+0

Использование 'top | left' перемещает кнопку поверх первого элемента списка. – althaus

0

Я просто делаю то, что, по моему мнению, делает приложение 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" /> 
Смежные вопросы