2015-03-02 138 views
0

我想在android中创建滑动抽屉,应该放置在活动顶部,并且应该像android通知面板一样从上到下打开。如何实现这一目标?Android上下滑动抽屉

+1

可能重复:http://stackoverflow.com/questions/3695856/android-slidingdrawer-从顶部 – jonDoe 2015-03-02 08:18:13

+0

检查此http://stackoverflow.com/a/11227689/1641556 – Elshan 2015-03-02 08:20:11

回答

1

默认SlidingDrawer类不允许这样做。您可以从这里使用面板类来获得非常相似的东西,虽然OR或者为SlidingDrawer设置了旋转角度180º,内容和句柄。 注:安卓:旋转的API支持>等级11

http://www.ohloh.net/p/android-misc-widgets
https://github.com/IanDarwin/Android-Cookbook-Examples/tree/master/SlidingDrawer-Topdown

Reference

+0

我无法运行食谱示例其给我的错误为03-02 16:44:06.023:E/AndroidRuntime(21584):java.lang.RuntimeException:无法启动活动ComponentInfo {com.example.slidingdrawer/com。 example.slidingdrawer.MainActivity}:java.lang.RuntimeException:你的Panel必须有一个View,其id属性是'R.id.panelHandle' – user3391170 2015-03-02 11:14:23

0

如果你想拥有从顶部滑动抽屉底部然后就PASE这段代码复制您的项目,它是100%的工作代码。

main.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" 
    android:background="#d3d3d3" 
    > 
    <SlidingDrawer 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/slidingDrawer" 
    android:layout_width="wrap_content" 
    android:layout_height="300dp" 
    android:content="@+id/content" 
    android:gravity="center_horizontal" 
    android:handle="@+id/handle" 
    android:orientation="vertical" 
    android:rotation="180" > 

    <LinearLayout 
     android:id="@+id/handle" 
     android:layout_width="fill_parent" 
     android:layout_height="40dp" 
     android:gravity="right" 
     android:background="@+drawable/drawer_bk" 
      > 

     <ImageView 
      android:id="@+id/imageView" 
      android:layout_width="30dp" 
      android:layout_height="30dp" 
      android:background="@+drawable/drawer1" /> 



    </LinearLayout> 

<RelativeLayout 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:id="@+id/content" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentTop="true" 
    android:layout_marginTop="45dp" > 

    <RelativeLayout 
     android:id="@+id/rel1" 
     android:layout_width="match_parent" 
     android:layout_height="70dp" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentTop="true" 
     android:layout_marginTop="10dp" 
     android:rotation="180" > 

     <ImageView 
      android:id="@+id/ImageView04" 
      android:layout_width="70dp" 
      android:layout_height="70dp" 
      android:layout_alignParentTop="true" 
      android:layout_centerHorizontal="true" 
      android:onClick="visit" 
      android:src="@drawable/visit_icon" /> 

     <ImageView 
      android:id="@+id/ImageView03" 
      android:layout_width="70dp" 
      android:layout_height="70dp" 
      android:layout_alignParentTop="true" 
      android:layout_marginRight="35dp" 
      android:layout_toLeftOf="@+id/ImageView04" 
      android:onClick="contact_us" 
      android:src="@drawable/contact_icon" /> 

     <ImageView 
      android:id="@+id/ImageView02" 
      android:layout_width="70dp" 
      android:layout_height="70dp" 
      android:layout_alignParentTop="true" 
      android:layout_marginLeft="35dp" 
      android:layout_toRightOf="@+id/ImageView04" 
      android:onClick="logout" 
      android:src="@drawable/singout_icon" /> 
    </RelativeLayout> 


</RelativeLayout> 

    </SlidingDrawer> 

MainActivity.java

public class MainActivity extends Activity 
{ 

/** Duration of wait **/ 
private final int SPLASH_DISPLAY_LENGTH = 4000; 
Button slideButton,b1, b2,b3,b4; 
SlidingDrawer slidingDrawer; 

@SuppressWarnings("deprecation") 
@Override 
protected void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    //slideButton = (Button) findViewById(R.id.slideButton); 
    slidingDrawer = (SlidingDrawer) findViewById(R.id.slidingDrawer); 
    slidingDrawer.setOnDrawerOpenListener(new OnDrawerOpenListener() { 
     @Override 
     public void onDrawerOpened() 
     { 
      // slideButton.setBackgroundResource(R.drawable.down_arrow_icon); 
      slidingDrawer.setBackgroundResource(R.drawable.hd_img_1); 
     } 
    }); 

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

      // slideButton.setBackgroundResource(R.drawable.upwar_arrow_icon); 
      slidingDrawer.setBackgroundColor(Color.TRANSPARENT); 
     } 
    }); 

    } 
}