Mein Problem ist folgendes: Ich sperre das Navigationsmenü setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_OPEN)
im Querformat des Tablets, aber ich brauche das Fragment von rechts um aktiv zu sein, damit ich es anklicken kann Navigation immer geöffnet. Aber ich weiß nicht, wie es geht. Bitte helfen Sie.Anklickbares Fragment anklickbar, wenn die Navigationsleiste geöffnet wird
6
A
Antwort
7
Es gibt ein paar Dinge, die Sie tun müssen:
das Layout deaktivieren durch Schwund eine transparente Farbeinstellung:
drawer.setScrimColor(Color.TRANSPARENT);
Schublade verriegeln
drawer.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_OPEN);
eine benutzerdefinierte Schublade Klasse erstellen, die das versehentliche Modus Sie suchen erlaubt:
public class CustomDrawer extends DrawerLayout { public CustomDrawer(Context context) { super(context); } public CustomDrawer(Context context, AttributeSet attrs) { super(context, attrs); } public CustomDrawer(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); } @Override public boolean onInterceptTouchEvent(MotionEvent ev) { View drawer = getChildAt(1); if (getDrawerLockMode(drawer) == LOCK_MODE_LOCKED_OPEN && ev.getRawX() > drawer.getWidth()) { return false; } else { return super.onInterceptTouchEvent(ev); } } }
Verwenden Sie diese Klasse in xml:
<com.example.myapplication.CustomDrawer xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <FrameLayout android:layout_width="match_parent" android:layout_height="match_parent"> <!-- The main content view --> </FrameLayout> <ListView android:layout_width="100dp" android:layout_height="match_parent" android:layout_gravity="start" android:background="#111"/> </com.example.myapplication.CustomDrawer>
2
Dies ist eine schwierige Sache. Wenn die Schublade geöffnet ist, fängt sie Ihre Berührungsereignisse ab, die das Schließen der Schublade auslösen. Um das zu verhindern, müssen Sie Ihre DrawerLayout und überschreiben die onInterceptTouchEvent Methode Unterklasse:
public class CustomDrawerLayout extends DrawerLayout
{
private View rightView;
private int mTouchSlop;
public CustomDrawerLayout (Context context)
{
this(context, null);
}
public CustomDrawerLayout (Context context, AttributeSet attrs)
{
this(context, attrs, 0);
}
public CustomDrawerLayout (Context context, AttributeSet attrs, int defStyle)
{
super(context, attrs, defStyle);
mTouchSlop = ViewConfigurationCompat.getScaledPagingTouchSlop(ViewConfiguration.get(context));
}
public void setRightView (View v)
{
this.rightView = v;
}
@Override
public boolean onInterceptTouchEvent (MotionEvent ev)
{
boolean result = super.onInterceptTouchEvent(ev);
if (rightView != null && isDrawerOpen(rightView))
{
DrawerLayout.LayoutParams layoutParams = (DrawerLayout.LayoutParams) rightView.getLayoutParams();
if (layoutParams.gravity == Gravity.END)
{
// This is true when the position.x of the event is happening on the left of the drawer (with gravity END)
if (ev.getX() < rightView.getX() && ev.getX() > mTouchSlop)
{
result = false;
}
}
}
return result;
}
}
Dies ist mein Code mit einem rechten Schublade arbeiten. Ich bin mir sicher, dass du das für deine linke Schublade anpassen kannst. Vielleicht haben Sie auch den Schatten deaktivieren:
mDrawerLayout.setScrimColor(Color.TRANSPARENT);
Verwandte Themen
- 1. Die Navigationsleiste wird transparent, wenn die Tastatur geöffnet wird
- 2. Warum wird das Fragment nicht in der Navigationsleiste geöffnet?
- 3. So verhindern Sie, dass ein Fragment in der Navigationsleiste geöffnet wird, wenn dieses Fragment bereits geöffnet ist
- 4. Wie aktualisiert man das Fragment, wenn die Registerkarte geöffnet wird?
- 5. Anklickbares Layout
- 6. Android anklickbares Widget mit ListView nicht anklickbar auf ListItems
- 7. Fragment wird nicht mit FragmentPagerAdapter geöffnet
- 8. Navigationsleiste - Fragment nicht angezeigt
- 9. Den Titel der Navigationsleiste anklickbar machen swift
- 10. Rückstapel aufräumen, wenn die Navigationsschublade geöffnet wird
- 11. Fragment Manager in Navigationsleiste Fehlern
- 12. Navigationsschublade geöffnet nach dem Aufspringen Fragment Backstack
- 13. IsolatedStorageFileStream-Ausnahme wird ausgelöst, wenn die Datei geöffnet wird?
- 14. Aktivität wird nicht geöffnet, wenn die Schaltfläche geklickt wird [ANDROID]
- 15. Die Seite wird verkleinert, wenn das Menü geöffnet wird
- 16. Das untere Blatt wird geschlossen, wenn die Tastatur geöffnet wird
- 17. DialogFragment wird immer skaliert, wenn die Tastatur geöffnet wird
- 18. Wie kann ich Fragment UI deaktivieren, wenn ein anderes Fragment über eins in Android geöffnet ist?
- 19. Stoppen Sie die gestartete Aufgabe Wenn die App geöffnet wird
- 20. So erhalten Sie die Tastaturhöhe, wenn die App geöffnet wird
- 21. Multiple PlaceAutoCompleteFragment wird geöffnet, wenn sehr schnell darauf geklickt wird
- 22. Fusion Diagramme dynamisch anklickbar
- 23. App stürzt ab, während neues Fragment in Viewpager geöffnet wird
- 24. Wie erkennt man, ob die Navigationsleiste geöffnet ist?
- 25. Anklickbares Feld in Django ändern admin list_display
- 26. android maps v2 stürzt ab, wenn in fragment wieder geöffnet
- 27. Navigationsleiste verschwindet, wenn sie programmgesteuert gedrückt wird
- 28. Platzieren Sie einen Link auf ein anklickbares Objekt in HTML
- 29. Ansicht (MKMapView) ändert sich, wenn die Navigationsleiste ausgeblendet wird
- 30. Erkennen, wenn die Rücktaste in der Navigationsleiste angetippt wird
Danke, das funktioniert ein. –
Können Sie immer noch auf die Elemente in Ihrer Schublade klicken, da sie für den gesamten Bildschirm den Wert false zurückgibt? – Quanturium
@Quanturium für das müssen Sie überprüfen, ob die Berührung sogar auf dem ListView durchgeführt wird oder nicht. Mein Code wurde entsprechend aktualisiert. – Simas