0

Ich habe 8 Tabs in meiner App und ich möchte den Zugriff auf die letzten 4 Tabs erleichtern, die sonst bis zum Ende gescrollt werden müssen.Wie füge ich ein Dropdown-Menü in den Tabs von viewpager hinzu?

Gemäß den Richtlinien für das Materialdesign können wir das Dropdown-Menü in Registerkarten verwenden, indem Sie als letzte Registerkarte die Option "more" angeben. Wenn der Benutzer ein Dropdown-Element auswählt, wird dieses Element auf der vorletzten Registerkarte angezeigt als die ausgewählte Registerkarte.

Wie erreichen? es gibt keine Dokumentation darüber, wie dies zu tun ist? Nur Bilder werden bereitgestellt.

Here's the link to material design guidelines for tabs

Here's an image of tabs with an option "more"

Antwort

0

Ich werde meine eigene Frage beantworten, könnte es jemand Zeit sparen, wenn sie auf dieser road.Here die gehen zu entscheiden, was ich herausgefunden: -

ich eine ähnliche Frage auf Registerkarten über Überlauf Paginierung in TabLayout geschrieben hatte und erhielt eine Antwort von @ianhanniballake, in der er erwähnte, dass diese Funktionen für Desktop-Registerkarten und nicht in TabLayout unterstützt werden.

Here's the link to the question

0

Ich würde Ihnen empfehlen PopupMenu zu verwenden. Es ist einfach zu bedienen, sieht gut aus. Hier

ist ein Beispiel, wie ich es verwenden:

Aktivität

View view = findViewById(R.id.action_settings); 

      LayoutInflater layoutInflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
      View popupView = layoutInflater.inflate(R.layout.popup, null); 
      final ListView listView = (ListView) popupView.findViewById(R.id.listView); 

      String[] functions = {getString(R.string.shareScreenshot), getString(R.string.shareDatei), getString(R.string.shareXML)}; 

      ListAdapter adapter = new CustomPopupAdapter(this, functions, listView); 
      listView.setAdapter(adapter); 

      Display display = (this.getWindowManager().getDefaultDisplay()); 
      Point size = new Point(); 
      display.getSize(size); 
      int width = size.x; 
      //int height = size.y; 

      Resources resources = this.getResources(); 
      int navigationBarHeight = 0; 
      int statusbarHeight = 0; 
      int resourceId = resources.getIdentifier("navigation_bar_height", "dimen", "android"); 
      if (resourceId > 0) { 
       navigationBarHeight = resources.getDimensionPixelSize(resourceId); 
      } 

      resourceId = resources.getIdentifier("status_bar_height", "dimen", "android"); 
      if (resourceId > 0) { 
       statusbarHeight = resources.getDimensionPixelSize(resourceId); 
      } 

      final PopupWindow popupWindow = new PopupWindow(this); 
      popupWindow.setContentView(popupView); 
      if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { 
       popupWindow.setBackgroundDrawable(ContextCompat.getDrawable(this, R.drawable.shadow_02327)); 
      } else { 
       popupWindow.setBackgroundDrawable(ContextCompat.getDrawable(this, R.drawable.shadow_02327)); 
      } 
      popupWindow.setWidth(width); 
      popupWindow.setHeight(ViewGroup.LayoutParams.WRAP_CONTENT); 
      popupWindow.setOutsideTouchable(true); 
      popupWindow.setFocusable(true); 
      popupWindow.showAtLocation(view, Gravity.NO_GRAVITY, 0, navigationBarHeight + statusbarHeight); 

      listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
       @Override 
       public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 

        //Click handle 
       } 
      }); 
     } 

Adapter

public class CustomPopupAdapter extends ArrayAdapter { 

      private String[] option; 
      ListView owner; 


     public CustomPopupAdapter(Context context, String[] option, ListView owner) { 
      super(context, R.layout.custom_row_settings, option); 
      this.option = option; 
      this.owner = owner; 
     } 

     @Override 
     public View getView(int pos, View view, ViewGroup parent) { 
      LayoutInflater inflater = LayoutInflater.from(getContext()); 

      View customView = inflater.inflate(R.layout.popup_row_image_text, parent, false); 

      ImageView iv = (ImageView) customView.findViewById(R.id.imageView); 
      TextView tv = (TextView) customView.findViewById(R.id.textView); 
      tv.setText(option[pos]); 


      switch (pos) { 
       case 0: 
        iv.setImageResource(R.drawable.ic_photo_camera_grey_24dp); 
        break; 
       case 1: 
        iv.setImageResource(R.drawable.ic_insert_drive_file_grey_24dp); 
        break; 
       case 2: 
        iv.setImageResource(R.drawable.ic_code_grey_24dp); 
        break; 
       case 3: 
        iv.setImageResource(R.drawable.ic_move_to_inbox_grey_24dp); 
        break; 
      } 

      return customView; 
     } 
    } 

popup.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:padding="5dp" 
    android:background="@color/white"> 

    <ListView 
     android:id="@+id/listView" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content"> 

    </ListView> 

</RelativeLayout> 
+0

wie kann ich bringe die gewählte Option aus dem Popup-Menü auf den letzten Reiter und als die ausgewählten Registerkarte zeigen? –

+0

Der Anker in meinem Beispiel ist null. Ändern Sie es auf die Registerkarte, die Sie möchten! Dann sollten Sie es haben :) – XxGoliathusxX

+0

Dies beantwortet meine Frage nicht, ich möchte wissen, wie man Registerkarte mit einem Dropdown-Menü einrichten, ich weiß, wie Popup-Menü zu machen, aber wenn Sie vorschlagen, Popup-Menü in Tabs zu verwenden, bitte Erklären Sie, wie mit Code im Zusammenhang mit Tabs. –