代码之家  ›  专栏  ›  技术社区  ›  Vidar Vestnes

单击时如何更改滑动抽屉手柄上的图标

  •  4
  • Vidar Vestnes  · 技术社区  · 17 年前

    当我试图打开滑动抽屉时,我试图改变手柄上的图标。 当我从视图中提取句柄并设置onclickListener或ontouchlistener时,它似乎永远不会得到trigget。

    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”消息,但它没有。

    有什么想法吗?

    2 回复  |  直到 9 年前
        1
  •  8
  •   Vidar Vestnes    16 年前

    我找到了,很容易…我只需要把听筒放在抽屉里。

    然后实现两个方法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);
            }
    
    });
    

    我宁愿在手柄上使用动画,而不是因为闪烁而更改图像。

        2
  •  -1
  •   Theanun Rann    9 年前

    我发现它已经很久了,但现在它已经完成了。 当您单击查看滑动抽屉时,这是更改图像句柄的最佳方法。

    它有两个方法,我们在下面的代码中使用。

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