0

Ich möchte Detailansicht machen. Wenn Sie auf ein Objekt klicken, erscheint ein Detaillayout von unten. Es ist möglich, das Layout zu verschieben, indem Sie eine beliebige Stelle auf dem Layout berühren.Wie erstellt man ein Layout, das von unten in Android erscheint?

Ich habe einen Code verwendet, es funktioniert nicht korrekt. Wenn ich das Layout berühre, erscheint die obere Seite des Layouts auf der Unterseite des Berührungspunktes. Außerdem gibt es einen gewissen Abstand zwischen Berührungspunkt und Oberseite des Layouts

Beispielbilder zeigt was ich meine. Es ist Mapping App "2gis"

mLinearLayout.setOnTouchListener(new View.OnTouchListener() { 
    @Override 
    public boolean onTouch(View view, MotionEvent event) { 

     CoordinatorLayout.LayoutParams params = (CoordinatorLayout.LayoutParams) view.getLayoutParams(); 
     if (view.getId() != R.id.bottomPanel) return false; 

     switch (event.getAction()) 
     { 
      case MotionEvent.ACTION_MOVE: 
       params.topMargin = (int)event.getRawY(); 
       view.setLayoutParams(params); 
       break; 

      case MotionEvent.ACTION_UP: 

       view.setLayoutParams(params); 
       break; 

      case MotionEvent.ACTION_DOWN: 
       break; 
     } 

     return true; 
    } 
}); 

example 1

example 2

Antwort

2

Was Sie suchen einen Bottom sheet in Material-Design genannt wird. Es ist in der Android Design-Support-Bibliothek v23.2. + Enthalten.

Alles, was Sie tun müssen, ist die layout_behavior des Behälters im Hinblick auf BottomSheetBehavior einzustellen:

app:layout_behavior="android.support.design.widget.BottomSheetBehavior" 

Hier sind einige schöne Anleitungen, wie Bodenblech in Android zu implementieren:

+0

Dank für Ihre Antwort. Funktioniert es bei alten Versionen? Android 4.4 zum Beispiel? –

+0

Ja funktioniert es auf älteren Versionen, das ist, was Support-Bibliotheken tun, lesen Sie dies für weitere Details über was die Support-Bibliothek tut: http: //stackoverflow.com/questions/12926548/what-is-anandroid-support-library –

+0

Große Sache! Vielen Dank –