我希望使用滑块手柄移动“顶部文本”,类似于“底部文本”的操作,并在滑块到达顶部时将其推离屏幕。这可能吗?我不一定需要使用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>
答案 0 :(得分: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);
}
});