0

我想實現可滾動的按鈕列表。屏幕上的按鈕分頁 - Android

SS

如屏幕截圖所示的上方,有在屏幕上顯示三個按鈕。我正在嘗試創建一個按鈕列表,用戶可以一次滾動3個按鈕。

我試圖2種方式:

1-查看尋呼機:我創建1個片段的每個3個按鍵。

滾動工作完美,因爲我想要的,但是當我需要添加新的按鈕,這是一個真正的開銷工作。

2- RecyclerView:這是行之有效的,但一次沒有滾動3。

所以我想在屏幕上只顯示3個項目。當用戶滾動時,它將滾動到接下來的3個項目。

是否有可能使用RecyclerView(這更容易添加到它)做到這一點?

回答

1

的一個解決方案,可以使用適配器,其顯示每第3組的元素,然後使用PageSnapHelper來獲得尋呼效果:

適配器:

public class ButtonsRecyclerAdapter extends RecyclerView.Adapter<ButtonsRecyclerAdapter.ButtonsViewHolder> { 

    private List<Button> mButtons = new ArrayList<>(); 

    @Override 
    public ButtonsViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 
     View layoutView = LayoutInflater.from(parent.getContext()).inflate(R.layout.list_item_buttons, null); 
     return new ButtonsViewHolder(layoutView); 
    } 

    @Override 
    public void onBindViewHolder(ButtonsViewHolder holder, int position) { 
     int startPosition = getItemCount() * position; 
     int endPosition = startPosition + 3; 

     for (int i = startPosition; i < endPosition || i < mButtons.size(); i++) { 
      Button neededButton = holder.getButton(i - position); 
      neededButton.setVisibility(View.VISIBLE); 
      //Do whant you want to do with it 
     } 
    } 

    @Override 
    public int getItemCount() { 
     return null != mButtons ? ((int) Math.ceil((double) mButtons.size()/3)) : 0; 
    } 

    public class ButtonsViewHolder extends RecyclerView.ViewHolder { 

     Button mButtonFirst; 
     Button mButtonSecond; 
     Button mButtonThird; 

     public ButtonsViewHolder(View itemView) { 
      super(itemView); 
      mButtonFirst = (Button) itemView.findViewById(R.id.button_first); 
      mButtonSecond = (Button) itemView.findViewById(R.id.button_second); 
      mButtonThird = (Button) itemView.findViewById(R.id.button_third); 
     } 

     Button getButton(int index) { 
      switch (index) { 
       case 0: 
        return mButtonFirst; 
       case 1: 
        return mButtonSecond; 
       case 2: 
        return mButtonThird; 
      } 
      return null; 
     } 
    } 
} 

列表項佈局

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
       android:layout_width="match_parent" 
       android:layout_height="match_parent" 
       android:gravity="center" 
       android:orientation="horizontal"> 

    <Button 
     android:id="@+id/button_first" 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:layout_weight="1" 
     android:visibility="invisible"/> 

    <Button 
     android:id="@+id/button_second" 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:layout_weight="1" 
     android:visibility="invisible"/> 

    <Button 
     android:id="@+id/button_third" 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:layout_weight="1" 
     android:visibility="invisible"/> 
</LinearLayout> 
+0

是否有可能讓觀者只持有1個按鈕? – MBH

+0

我找不到這樣做的方法 –

+0

好吧,非常感謝你的解決方案,我現在正在申請,我會告訴我什麼時候完成 – MBH