我的应用程序中有一个滑动抽屉。
当我点击android:handle
时,它会打开,我已将其提供给图像视图。
我想在按下后退按钮时关闭抽屉。
代码:
SlidingDrawer slider;
@Override
public void onBackPressed() {
slider.close ();
}
super.onBackPressed();
主。 Xml文件
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="center"
android:orientation="vertical" >
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="right"
android:orientation="vertical" >
<SlidingDrawer
android:id="@+id/slider"
android:layout_width="150dp"
android:layout_marginRight="0dp"
android:layout_height="match_parent"
android:handle="@+id/handle"
android:content="@+id/content"
android:orientation="horizontal"
>
<ImageView
android:id="@+id/handle"
android:background="@drawable/up"
android:layout_width="50dp"
android:layout_height="50dp"
android:gravity="center"
/>
<GridView
android:id="@+id/content"
android:background="@color/black"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
</SlidingDrawer>
</LinearLayout>
</RelativeLayout>
活动文件
@Override
public void onCreate(Bundle savedInstanceState)
{
SlidingDrawer slide = (SlidingDrawer)this.findViewById(R.id.slider);
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
@Override public void onBackPressed() {
if(slide.isOpened()){
slide.close ();
}
else{
super.onBackPressed();
}
}
}
答案 0 :(得分:3)
如果它实际打开,你只需关闭它:
SlidingDrawer slider;
@Override
public void onBackPressed() {
if (slider.isOpened()) {
slider.close ();
} else {
super.onBackPressed();
}
}
修改
您的slider
字段超出了scope。您需要将其声明为类字段,以便所有非静态方法都可以访问它。另请参阅this document。
答案 1 :(得分:0)
你不能在in-pressed方法中调用super方法,你只需要这个...
@Override
public void onBackPressed() {
slider.close ();
}
不要在后面按
中调用超级方法