0

benutzte ich ein SlidingDrawer wie in diesem tutorialSlidingDrawer Unterlegungs in RelativeLayout

Es ist in einem Linearlayout funktioniert, aber es gibt immer ein Leerzeichen der Höhe des Schiebers abhängig und alle anderen Sachen unter dem Leerzeichen angezeigt.

Die Lösung sollte ein Relatives Layout verwenden. Dies löscht das Leerzeichen, aber die Handler-Schaltfläche des Schiebereglers scheint sich unter dem Inhalt der Scroll-Ansicht zu befinden und tut nichts, wenn Sie darauf klicken. Siehe Screenshot enter image description here

MainActivity.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:app="http://schemas.android.com/apk/res-auto" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="fill_parent" 
android:layout_height="match_parent" 
android:orientation="vertical"> 

<include 
    android:id="@+id/tbar" 
    layout="@layout/primerdivisor" /> 

<SlidingDrawer 
    android:id="@+id/SlidingDrawer" 
    android:layout_width="wrap_content" 
    android:layout_height="150dp" 
    android:content="@+id/contentLayout" 
    android:handle="@+id/slideButton" 
    android:orientation="vertical" 
    android:padding="10dip" 
    android:rotation="180"> 
    <!-- Handle button --> 


    <Button 
     android:id="@+id/slideButton" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:background="@drawable/button_selector" 
     android:ems="10" 
     android:rotation="180" 
     android:text="Show" android:clickable="true"/> 

    <!-- Content Layout --> 
    <LinearLayout 
     android:id="@+id/contentLayout" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:background="#FFCC" 
     android:gravity="center" 
     android:orientation="vertical" 
     android:padding="10dip"> 

     <Button 
      android:id="@+id/Button01" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:layout_margin="2dp" 
      android:background="@drawable/button_selector" 
      android:text="Button 1" 
      android:textColor="@color/textBlack" /> 

     <TextView 
      android:id="@+id/text" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:layout_margin="2dp" 
      android:background="@drawable/button_selector" 
      android:gravity="center" 
      android:padding="5dp" 
      android:text="Text View Item" 
      android:textColor="@color/textBlack" /> 
    </LinearLayout> 
</SlidingDrawer> 

<ScrollView 
    android:id="@+id/scrollView" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content"> 

    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_marginTop="10dp" 
     android:orientation="vertical"> 
.... 

MainActivity.java

... 
private void createSlider(){ 
    slideButton = (Button) findViewById(R.id.slideButton); 
    slidingDrawer = (SlidingDrawer) findViewById(R.id.SlidingDrawer); 
    b1 = (Button) findViewById(R.id.Button01); 
    textView = (TextView) findViewById(R.id.text); 

    // Setting Listeners to all buttons and textview 
    setListeners(); 

    // Listeners for sliding drawer 
    slidingDrawer.setOnDrawerOpenListener(new OnDrawerOpenListener() { 
     @Override 
     public void onDrawerOpened() { 

      // Change button text when slider is open 
      Log.i("----","blaaaaaa open"); 
      slideButton.setText("Close"); 
     } 
    }); 

    slidingDrawer.setOnDrawerCloseListener(new OnDrawerCloseListener() { 
     @Override 
     public void onDrawerClosed() { 

      // Change button text when slider is close 
      slideButton.setText("Open"); 
     } 
    }); 
} 

// Listeners method 
void setListeners() { 
    b1.setOnClickListener(this); 
    textView.setOnClickListener(this); 
} 

@Override 
public void onClick(View v) { 

    // Toast shown on sliding drawer items click 
    if (v.getId() == R.id.text) { 
     Toast.makeText(MainActivity.this, textView.getText() + " Clicked", 
       Toast.LENGTH_SHORT).show(); 
    } else { 
     Button b = (Button) v; 
     Toast.makeText(MainActivity.this, b.getText() + " Clicked", 
       Toast.LENGTH_SHORT).show(); 
    } 
} 
... 

Der Schieber des Scrollüberlappen sollten, wenn seine

Whiped aus
+1

Verschieben Sie Ihre 'SlidingDrawer' unter den anderen Inhalt – StuStirling

+0

Ich habe nicht darüber nachgedacht. Danke, dass es funktioniert – WeSt

+0

Ich habe eine Antwort geschrieben, da dieser Kommentar das Problem gelöst hat. – StuStirling

Antwort

1

In Ansichtshierarchie Begriffe, Ansichten definiert Zu Beginn Ihres Layouts sind XML "tiefer" als die später definierten.

In Ihrem Fall wird Ihre ScrollView zur Hierarchie nach Ihrer SlidingDrawer hinzugefügt, also was Ihr sehend ist zu erwarten.

Bewegen Sie Ihre SlidingDrawer unter Ihre ScrollView und es sollte darüber sein.