1

我希望“顶部文本”与滑块手柄一起移动,类似于“底部文本”的移动方式,并在滑块到达顶部时将其推离屏幕。这可能吗?我不一定需要使用 SlidingDrawer,我只需要提供的行为。如果答案只是 xml,那就太好了。

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent" >
    <TextView android:id="@+id/textViewTop"
              android:layout_width="wrap_content"
              android:layout_height="wrap_content"
              android:text="Top Text" />
    <SlidingDrawer android:id="@+id/SlidingDrawer"
                   android:layout_width="fill_parent"
                   android:layout_height="fill_parent"
                   android:content="@+id/contentLayout"
                   android:handle="@+id/slideHandleButton" >
    <Button android:id="@+id/slideHandleButton"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:text="Slider" >
    </Button>
    <LinearLayout android:layout_width="wrap_content"
                  android:id="@+id/contentLayout"
                  android:layout_height="wrap_content">
        <TextView android:id="@+id/textViewBottom"
                  android:text="Bottom Text"
                  android:layout_width="wrap_content"
                  android:layout_height="wrap_content" />
    </LinearLayout>
  </SlidingDrawer>
</RelativeLayout>
4

1 回答 1

0

TextView控股Top Text应该是SlidingDrawer的一部分。目前不是。此外,您ids为顶部文本和底部文本定义了相同的定义。我已经改变了。看看以下是否能解决问题:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent" >

    <SlidingDrawer android:id="@+id/SlidingDrawer"
                   android:layout_width="fill_parent"
                   android:layout_height="fill_parent"
                   android:content="@+id/contentLayout"
                   android:handle="@+id/contentLayoutTop" >

        <LinearLayout android:layout_width="wrap_content"
                  android:id="@+id/contentLayoutTop"
                  android:layout_height="wrap_content"
                  android:orientation="vertical" >

            <TextView android:id="@+id/textViewInTransitTop"
                  android:text="Top Text"
                  android:layout_width="wrap_content"
                  android:layout_height="wrap_content" />

            <Button android:id="@+id/slideHandleButton"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_gravity="center"
                android:text="Slider" >
            </Button>

        </LinearLayout>            

        <LinearLayout android:layout_width="wrap_content"
                  android:id="@+id/contentLayout"
                  android:layout_height="wrap_content">

            <TextView android:id="@+id/textViewInTransit"
                  android:text="Bottom Text"
                  android:layout_width="wrap_content"
                  android:layout_height="wrap_content" />

        </LinearLayout>

  </SlidingDrawer>

</RelativeLayout>

如果您需要在之前(或之后)的顶部文本@+id/slideHandleButton,请更改它们的定义顺序。如果您需要按钮与文本一致,请将按钮声明移动到包含顶部文本的 LinearLayout 中。

编辑:

如果答案只是 xml,那就太好了。

我尝试满足您的要求,但这不能仅在 xml 中完成。幸运的是,代码部分很简单:

在您的活动中onCreate(Bundle)

SlidingDrawer slidingDrawer = (SlidingDrawer) findViewById(R.id.SlidingDrawer);

final TextView textViewInTransitTop = (TextView)
                                findViewById(R.id.textViewInTransitTop);

slidingDrawer.setOnDrawerOpenListener(new OnDrawerOpenListener() {

    @Override
    public void onDrawerOpened() {

        // Drawer's been opened // Don't use View.INVISIBLE
        textViewInTransitTop.setVisibility(View.GONE);              
    }
});

slidingDrawer.setOnDrawerCloseListener(new OnDrawerCloseListener() {

    @Override
    public void onDrawerClosed() {

        // Text on top is back again
        textViewInTransitTop.setVisibility(View.VISIBLE);               
    }
});
于 2013-09-10T18:17:05.183 回答