Android实现顶部导航菜单左右滑动效果

2019-12-10 17:53:16刘景俊

另外,在本示例中我没有实现背景图片的平滑向右或是向左的动画效果,有兴趣的的朋友可以把这样的效果加上,网上有一些实现这样的效果示例。

第二种解决方案: 
第二种解决方案我是采用的HorizontalScrollView实现的,这种布局可以实现横向滑动效果,但要注意只能有一个直接子标签。这种方案相比第一种方案要简单得多,只需要设置好布局就可以了。先看下示例运行效果:

Android,导航菜单,左右滑动

上图中实现的导航菜单左右滑动效果可以让菜单逐步滑动,我这个示例中没有出现反弹的现象。好了,让我们看下布局代码:

<HorizontalScrollView 
android:layout_width="match_parent"
 android:layout_height="35dp"
 android:scrollbars="none" >

 <LinearLayout
 android:id="@+id/linearLayoutMenu"
 android:layout_width="match_parent"
 android:layout_height="wrap_content"
 android:background="@drawable/top_bg"
 android:gravity="center_vertical" >
 
 </LinearLayout>
</HorizontalScrollView> 

其中的菜单项我仍然是用TextView控件,我这里是使用代码添加的TextView,如下: 

private void setSlideMenu(){ 
// 包含TextView的LinearLayout
 LinearLayout menuLinerLayout = (LinearLayout) findViewById(R.id.linearLayoutMenu);
 menuLinerLayout.setOrientation(LinearLayout.HORIZONTAL);
 // 参数设置
 LinearLayout.LayoutParams menuLinerLayoutParames = new LinearLayout.LayoutParams(
 LinearLayout.LayoutParams.WRAP_CONTENT, 
 LinearLayout.LayoutParams.WRAP_CONTENT,
 1);
 menuLinerLayoutParames.gravity = Gravity.CENTER_HORIZONTAL;
 
 // 添加TextView控件
 for(int i = 0;i < menus.length;i++){
 TextView tvMenu = new TextView(this);
 tvMenu.setLayoutParams(new LayoutParams(30,30)); 
 tvMenu.setPadding(30, 14, 30, 10);
 tvMenu.setText(menus[i]);
 tvMenu.setTextColor(Color.WHITE);
 tvMenu.setGravity(Gravity.CENTER_HORIZONTAL);
 menuLinerLayout.addView(tvMenu,menuLinerLayoutParames);
 }
 }