乌海市住房城乡建设厅网站,微九州合作网站,企业微信登录,建筑公司网站页面图片事实上#xff0c;有一种方法可以做到这一点。即使没有实施自己的ActionBar。看看hierachyviewer吧#xff01;(位于工具目录中)还有的DecorView#xff0c;并且LinearLayout作为一个孩子。这LinearLayout包含ActionBar其他内容和其他内容。所以#xff0c;你可以简单地应用…事实上有一种方法可以做到这一点。即使没有实施自己的ActionBar。看看hierachyviewer吧(位于工具目录中)还有的DecorView并且LinearLayout作为一个孩子。这LinearLayout包含ActionBar其他内容和其他内容。所以你可以简单地应用一些FrameLayout.LayoutParamsLinearLayout并以这种方式在左侧获得一些空间。然后您可以使用菜单ListView填充此空间并使用FrameLayout覆盖其他内容当单击它时折叠菜单。所以这里有一些代码首先折叠/扩展类(SlideMenu.java)package your.cool.app;import android.app.Activity;import android.content.Context;import android.content.Intent;import android.graphics.Rect;import android.util.Log;import android.view.LayoutInflater;import android.view.View;import android.view.View.OnClickListener;import android.view.ViewGroup;import android.view.Window;import android.view.animation.TranslateAnimation;import android.widget.AdapterView;import android.widget.AdapterView.OnItemClickListener;import android.widget.ArrayAdapter;import android.widget.FrameLayout;import android.widget.ImageView;import android.widget.LinearLayout;import android.widget.ListView;import android.widget.TextView;public class SlideMenu {//just a simple adapterpublic static class SlideMenuAdapter extends ArrayAdapter {Activity act;SlideMenu.SlideMenuAdapter.MenuDesc[] items;class MenuItem {public TextView label;public ImageView icon;}static class MenuDesc {public int icon;public String label;}public SlideMenuAdapter(Activity act, SlideMenu.SlideMenuAdapter.MenuDesc[] items) {super(act, R.id.menu_label, items);this.act act;this.items items;}Overridepublic View getView(int position, View convertView, ViewGroup parent) {View rowView convertView;if (rowView null) {LayoutInflater inflater act.getLayoutInflater();rowView inflater.inflate(R.layout.menu_listitem, null);MenuItem viewHolder new MenuItem();viewHolder.label (TextView) rowView.findViewById(R.id.menu_label);viewHolder.icon (ImageView) rowView.findViewById(R.id.menu_icon);rowView.setTag(viewHolder);}MenuItem holder (MenuItem) rowView.getTag();String s items[position].label;holder.label.setText(s);holder.icon.setImageResource(items[position].icon);return rowView;}}private static boolean menuShown false;private static View menu;private static LinearLayout content;private static FrameLayout parent;private static int menuSize;private static int statusHeight 0;private Activity act;SlideMenu(Activity act) {this.act act;}//call this in your onCreate() for screen rotationpublic void checkEnabled() {if(menuShown)this.show(false);}public void show() {//get the height of the status barif(statusHeight 0) {Rect rectgle new Rect();Window window act.getWindow();window.getDecorView().getWindowVisibleDisplayFrame(rectgle);statusHeight rectgle.top;}this.show(true);}public void show(boolean animate) {menuSize Functions.dpToPx(250, act);content ((LinearLayout) act.findViewById(android.R.id.content).getParent());FrameLayout.LayoutParams parm (FrameLayout.LayoutParams) content.getLayoutParams();parm.setMargins(menuSize, 0, -menuSize, 0);content.setLayoutParams(parm);//animation for smooth slide-outTranslateAnimation ta new TranslateAnimation(-menuSize, 0, 0, 0);ta.setDuration(500);if(animate)content.startAnimation(ta);parent (FrameLayout) content.getParent();LayoutInflater inflater (LayoutInflater) act.getSystemService(Context.LAYOUT_INFLATER_SERVICE);menu inflater.inflate(R.layout.menu, null);FrameLayout.LayoutParams lays new FrameLayout.LayoutParams(-1, -1, 3);lays.setMargins(0,statusHeight, 0, 0);menu.setLayoutParams(lays);parent.addView(menu);ListView list (ListView) act.findViewById(R.id.menu_listview);list.setOnItemClickListener(new OnItemClickListener() {Overridepublic void onItemClick(AdapterView parent, View view, int position, long id) {//handle your menu-click}});if(animate)menu.startAnimation(ta);menu.findViewById(R.id.overlay).setOnClickListener(new OnClickListener() {Overridepublic void onClick(View v) {SlideMenu.this.hide();}});Functions.enableDisableViewGroup((LinearLayout) parent.findViewById(android.R.id.content).getParent(), false);((ExtendedViewPager) act.findViewById(R.id.viewpager)).setPagingEnabled(false);((ExtendedPagerTabStrip) act.findViewById(R.id.viewpager_tabs)).setNavEnabled(false);menuShown true;this.fill();}public void fill() {ListView list (ListView) act.findViewById(R.id.menu_listview);SlideMenuAdapter.MenuDesc[] items new SlideMenuAdapter.MenuDesc[5];//fill the menu-items hereSlideMenuAdapter adap new SlideMenuAdapter(act, items);list.setAdapter(adap);}public void hide() {TranslateAnimation ta new TranslateAnimation(0, -menuSize, 0, 0);ta.setDuration(500);menu.startAnimation(ta);parent.removeView(menu);TranslateAnimation tra new TranslateAnimation(menuSize, 0, 0, 0);tra.setDuration(500);content.startAnimation(tra);FrameLayout.LayoutParams parm (FrameLayout.LayoutParams) content.getLayoutParams();parm.setMargins(0, 0, 0, 0);content.setLayoutParams(parm);Functions.enableDisableViewGroup((LinearLayout) parent.findViewById(android.R.id.content).getParent(), true);((ExtendedViewPager) act.findViewById(R.id.viewpager)).setPagingEnabled(true);((ExtendedPagerTabStrip) act.findViewById(R.id.viewpager_tabs)).setNavEnabled(true);menuShown false;}}一些帮助方法(对我来说在静态Functions.java中)public static int dpToPx(int dp, Context ctx) {Resources r ctx.getResources();return (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dp, r.getDisplayMetrics());}//originally: http://stackoverflow.com/questions/5418510/disable-the-touch-events-for-all-the-views//modified for the needs herepublic static void enableDisableViewGroup(ViewGroup viewGroup, boolean enabled) {int childCount viewGroup.getChildCount();for (int i 0; i View view viewGroup.getChildAt(i);if(view.isFocusable())view.setEnabled(enabled);if (view instanceof ViewGroup) {enableDisableViewGroup((ViewGroup) view, enabled);} else if (view instanceof ListView) {if(view.isFocusable())view.setEnabled(enabled);ListView listView (ListView) view;int listChildCount listView.getChildCount();for (int j 0; j if(view.isFocusable())listView.getChildAt(j).setEnabled(false);}}}}然后布局菜单布局(res / layout / menu.xml)android:layout_widthfill_parentandroid:layout_heightfill_parent android:orientationverticalandroid:layout_heightfill_parentandroid:layout_width250dipandroid:backgroundcolor/darkblackandroid:idid/menu_listviewandroid:layout_widthfill_parentandroid:layout_heightwrap_contentandroid:dividercolor/dividerblackandroid:dividerHeight2dip /android:idid/overlayandroid:layout_widthmatch_parentandroid:layout_heightmatch_parent listitems的布局(res / layout / menu_listitem.xml)android:idid/menu_iconandroid:layout_width30dpandroid:layout_height30dpandroid:layout_marginRight5dipandroid:layout_marginLeft10dipandroid:layout_marginTop10dipandroid:layout_marginBottom10dip /android:idid/menu_labelandroid:layout_widthmatch_parentandroid:layout_heightwrap_contentandroid:textColorcolor/whiteandroid:textSize24dpandroid:layout_marginTop10dipandroid:layout_marginBottom10dip /如何使用它在你的onCreate()private SlideMenu slidemenu;Overridepublic void onCreate(Bundle savedInstanceState) {//your onCreate codeslidemenu new SlideMenu(this);slidemenu.checkEnabled();}在ActionBar homebutton的处理程序中slidemenu.show();而已现在它的一些屏幕截图据我所知它正在发挥作用。如果您遇到任何问题或我的解释不明确请与我联系编辑ExtendedViewPagerExtendedPagerStripExtendedViewPagerpackage your.cool.app;//source: http://blog.svpino.com/2011/08/disabling-pagingswiping-on-android.htmlimport android.content.Context;import android.support.v4.view.ViewPager;import android.util.AttributeSet;import android.view.MotionEvent;public class ExtendedViewPager extends ViewPager {private boolean enabled;public ExtendedViewPager(Context context, AttributeSet attrs) {super(context, attrs);this.enabled true;}Overridepublic boolean onTouchEvent(MotionEvent event) {if (this.enabled) {return super.onTouchEvent(event);}return false;}Overridepublic boolean onInterceptTouchEvent(MotionEvent event) {if (this.enabled) {return super.onInterceptTouchEvent(event);}return false;}public void setPagingEnabled(boolean enabled) {this.enabled enabled;}}ExtendedPagerTabStrippackage your.cool.app;//source: http://blog.svpino.com/2011/08/disabling-pagingswiping-on-android.htmlimport android.content.Context;import android.support.v4.view.PagerTabStrip;import android.util.AttributeSet;import android.view.MotionEvent;public class ExtendedPagerTabStrip extends PagerTabStrip {private boolean enabled;public ExtendedPagerTabStrip(Context context, AttributeSet attrs) {super(context, attrs);this.enabled true;}Overridepublic boolean onTouchEvent(MotionEvent event) {if (this.enabled) {return super.onTouchEvent(event);}return false;}Overridepublic boolean onInterceptTouchEvent(MotionEvent event) {if (this.enabled) {return super.onInterceptTouchEvent(event);}return false;}public void setNavEnabled(boolean enabled) {this.enabled enabled;}}我将它SlideMenu用于一个ViewPager带有PagerTabStripfor如TalkMarket等标签的Activity 。你不能以一种简单的方式禁用这些视图所以上面的两个类只是扩展它们以onTouch在禁用时停止事件。