RelativeLayout中的SlidingDrawer underlap

时间:2017-07-26 14:31:59

标签: android android-linearlayout android-relativelayout slidingdrawer

我在这个tutorial

中使用了SlidingDrawer

它在LinearLayout中工作,但总是有一个空格,取决于滑块的高度,所有其他东西都显示在空格下面。

解决方案应该是使用相对布局。这会删除空格,但滑块中的处理程序按钮似乎位于滚动视图中的内容之下,并且不会通过单击它来执行任何操作。查看截图 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();
    }
}
...

滑动时,滑块应与滚动视图重叠

1 个答案:

答案 0 :(得分:1)

在视图层次结构术语中,在布局XML开头定义的视图更深入&#34;比后来定义的那些。

在您的情况下,您的ScrollView会在SlidingDrawer之后添加到层次结构中,因此您所期待的将会如此。

SlidingDrawer移至ScrollView以下,并且应高于input()