2009-07-22 10 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> 

私は、このコードは "onClickの" メッセージをログに記録する必要があり期待していたが、それはしていません。

アイデア?

答えて

8

私はそれが見つかった、それは簡単にprittyだった...私は引き出しにonOnDrawerScrollListenerを設定する必要があります。

2つのメソッドonScrollEndedとonScrollStartedを実装するよりも。

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); 
     } 

}); 

は、私はむしろ、ちらつきのbacauseイメージを変えるのではなく、ハンドル上のアニメーションを使用しています。

+0

アニメーションXMLファイルはどのように見えますか? – zzzzzzzzzzzzzzzzzzzzzzzzzzzzzz

-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); 
     } 
    }); 
関連する問題