我在名为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
它完美地显示了菜单,但我想在用户从菜单中选择一个选项时执行一些操作:
例如,当我选择“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");
}
});
如何访问这些按钮并将其设为事件?
谢谢!
答案 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
浏览示例的源代码