从滑动菜单中获取元素

时间:2013-04-29 10:54:28

标签: android slidingmenu

我在名为menu_list_slide_lateral.xml的.xml文件中定义了一个布局视图:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/linear_menu_slide"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <Button
        android:id="@+id/btnSliBebe"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="@string/bebe" />

    <Button
        android:id="@+id/button2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="@string/foto_diario" />

    <Button
        android:id="@+id/button3"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="@string/consejos" />

    <Button
        android:id="@+id/button4"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="@string/ajustes" />

</LinearLayout>

我从代码创建SlidingMenu:

setBehindContentView(R.layout.menu_list_slide_lateral);
setSlidingActionBarEnabled(true);       
slideMenu = getSlidingMenu();
slideMenu.setMode(SlidingMenu.LEFT);
slideMenu.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);
slideMenu.setShadowWidthRes(R.dimen.shadow_width);
slideMenu.setBehindOffset(100);
slideMenu.setFadeDegree(0.35f);

mi活动延伸自SlidingFragmentActivity:

public class TimelineActivity extends SlidingFragmentActivity

它完美地显示了菜单,但我想在用户从菜单中选择一个选项时执行一些操作:

sliding menu options

例如,当我选择“Bebe”选项时,我想打开另一个活动。 我试图将onClick事件设置为该按钮,但它似乎不起作用,它什么也没做:

inflater = getLayoutInflater();
item = inflater.inflate(R.layout.menu_list_slide_lateral, null);


btnSliBebe = (Button) item.findViewById(R.id.btnSliBebe);
btnSliBebe.setOnClickListener(new OnClickListener(){
    @Override
    public void onClick(View arg0) {

        Log.e(TAG, "boton bebe");

    }   
});

如何访问这些按钮并将其设为事件?

谢谢!

1 个答案:

答案 0 :(得分:0)

您应该为幻灯片菜单创建单独的片段,其中包含您的布局R.layout.menu_list_slide_lateral并将处理操作。这很容易做到。 现在,当您拥有此片段时,需要将其插入到幻灯片活动中。

你使用的setBehindContentView是菜单的占位符。因此,创建简单的布局,将保留您的菜单片段。例如。称之为R.layout.menu_frame,它应该是这样的:

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/menu_frame"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />

然后在您的滑动活动中将R.layout.menu_frame设置为behindContentView并将您的菜单片段添加到此视图中。

public class BaseSlidingActivity extends SlidingFragmentActivity {

protected MenuFragment mSlidingMenuFragment;
private SlidingMenu mSlidingMenu;


@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    // set the Behind View
    setBehindContentView(R.layout.menu_frame);

    //if we create new menu - create new MenuFragment and insert it into         
            //menu_frame
    if (savedInstanceState == null) {
        FragmentTransaction t = this.getSupportFragmentManager().beginTransaction();
        mSlidingMenuFragment = new MenuFragment();
        t.replace(R.id.menu_frame, mSlidingMenuFragment);
        t.commit();
    } 
            //if activity was restored(e.g. on orientation change) find it in fragment 
            //manager
            else {
        mSlidingMenuFragment = (MenuFragment) this.getSupportFragmentManager().findFragmentById(R.id.menu_frame);
    }

    // customize the SlidingMenu
    mSlidingMenu = getSlidingMenu();
    mSlidingMenu.setShadowWidthRes(R.dimen.shadow_width);
    mSlidingMenu.setShadowDrawable(R.drawable.shadow);
    mSlidingMenu.setBehindOffsetRes(R.dimen.slidingmenu_offset);
    mSlidingMenu.setFadeDegree(0.35f);
    mSlidingMenu.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);


}

我希望它有所帮助。您可以在github slidinfmenu example

浏览示例的源代码