2009-07-22 67 views
4

當我嘗試打開滑動手柄時,試圖更改手柄上的圖標。 當我從視圖中提取句柄並設置onclicklistener或ontouchlistener時,它似乎永遠不會得到trigget。如何更改SlidingDrawer手柄點擊時的圖標

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    SlidingDrawer drawer = (SlidingDrawer)findViewById(R.id.drawer_landscape); 

    ImageView handle = (ImageView)findViewById(R.id.handle_l); 
    handle.setFocusable(true); 

    handle.setOnClickListener(new OnClickListener(){ 


     @Override 
     public void onClick(View v) { 
      // TODO Auto-generated method stub 
      Log.i("test","onClick"); 
     } 

    }); 


} 

我的XML

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:id="@+id/base_frame_layout" 
    android:layout_gravity="bottom" 
    >   
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
     android:orientation="vertical" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     > 
     <TextView 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:text="@string/hello" 
      /> 
    </LinearLayout> 

     <SlidingDrawer 
      android:id="@+id/drawer_landscape" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:handle="@+id/handle_l" 
      android:content="@+id/content" 
      android:orientation="vertical" 
      android:visibility="visible" 
     > 

      <ImageView 
       android:id="@+id/handle_l" 
       android:layout_height="50px" 
       android:layout_width="64px" 
       android:padding="0px" 
       android:src="@drawable/icon" 
      /> 

      <TextView 
       android:id="@+id/content" 
       android:text="content" 
       android:layout_height="50px" 
       android:layout_width="64px" 
      />     

     </SlidingDrawer>  

</FrameLayout> 

我希望這個代碼應登錄 「點擊」 的消息,但事實並非如此。

任何想法?

回答

8

我發現它,它很容易...我只需要setOnDrawerScrollListener在我的抽屜裏。

比實施onScrollEnded和onScrollStarted的2個方法。

mSlidingDrawer.setOnDrawerScrollListener(new OnDrawerScrollListener(){ 

     @Override 
     public void onScrollEnded() { 
      // TODO Auto-generated method stub 
      Log.i("ddd","onScrollEnded slider"); 
      slider_animation.reverseTransition(HANDLE_ANIMATION_SPEED); 
     } 

     @Override 
     public void onScrollStarted() { 
      // TODO Auto-generated method stub 
      Log.i("ddd","onScrollStarted slider"); 
      slider_animation.startTransition(HANDLE_ANIMATION_SPEED); 
     } 

}); 

我寧願在手柄上使用動畫而不是改變圖像,因爲閃爍。

+0

你的動畫xml文件是什麼樣的? – zzzzzzzzzzzzzzzzzzzzzzzzzzzzzz 2011-12-17 03:54:38

-1

我發現它隨着時間的推移,但現在它完成了它。 當您單擊查看SlidingDrawer時,這是更改圖像句柄的最佳方式。

它有2個方法,我們在下面的代碼中使用。

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

    drawer.setOnDrawerOpenListener(new SlidingDrawer.OnDrawerOpenListener() { 
     @Override 
     public void onDrawerOpened() { 
      arr.setImageResource(R.drawable.arrowdown); 
     } 
    }); 
    drawer.setOnDrawerCloseListener(new SlidingDrawer.OnDrawerCloseListener() { 
     @Override 
     public void onDrawerClosed() { 
      arr.setImageResource(R.drawable.arrowup); 
     } 
    });