欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

摸鱼学Android 二十二 (侧边菜单)

程序员文章站 2022-06-21 19:50:24
摸鱼学Android 二十二 (侧边菜单)UI控件之十二 DrawerLayout(侧滑菜单)1 说明2 使用3 实例UI控件之十二 DrawerLayout(侧滑菜单)1 说明drawerLayout分为侧滑菜单和主内容区两部分,侧滑菜单可以根据手势展开与隐藏,主内容区的内容可以随着菜单的点击而变化。2 使用注意事项:主内容视图一定要是DrawerLayout的第一个子视图主内容视图的宽高需要match_parent必须指定侧滑菜单的layout_gravity属性,start表示从左向...

摸鱼学Android 二十二 (侧边菜单)

UI控件之十二 DrawerLayout(侧滑菜单)

1 说明

drawerLayout分为侧滑菜单和主内容区两部分,侧滑菜单可以根据手势展开与隐藏,主内容区的内容可以随着菜单的点击而变化。

2 使用

注意事项:

  • 主内容视图一定要是DrawerLayout的第一个子视图
  • 主内容视图的宽高需要match_parent
  • 必须指定侧滑菜单的layout_gravity属性,start表示从左向右滑出,end表示从右向左滑出
  • 侧滑菜单的宽度以dp为单位,不建议超过320dp

3 实例

  1. 主布局,最外层是DrawerLayout,主布局必须是第一个子视图
<android.support.v4.widget.DrawerLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/drawer_layout"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
                    android:id="@+id/ly_content"
                    android:layout_width="match_parent"
                    android:layout_height="match_parent"
                    android:orientation="vertical">

        <TextView
                android:id="@+id/tv_content"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_centerInParent="true"
                android:text="默认文本"
                android:textSize="25sp" />

    </RelativeLayout>

    <ListView
            android:id="@+id/list_left_drawer"
            android:layout_width="180dp"
            android:layout_height="match_parent"
            android:layout_gravity="start"
            android:background="#080808"
            android:choiceMode="singleChoice"
            android:divider="#FFFFFF"
            android:dividerHeight="1dp" />

</android.support.v4.widget.DrawerLayout>
  1. 自定义Adapter,复用前几节的MyAdapter
  2. 初始化侧滑菜单,重写点击事件
public class MainActivity extends AppCompatActivity  implements AdapterView.OnItemClickListener{

    private DrawerLayout drawer_layout;
    private ListView list_left_drawer;
    private ArrayList<Icon> menuLists;
    private MyAdapter<Icon> myAdapter = null;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        drawer_layout = (DrawerLayout) findViewById(R.id.drawer_layout);
        list_left_drawer = (ListView) findViewById(R.id.list_left_drawer);

        menuLists = new ArrayList<Icon>();
        menuLists.add(new Icon(R.drawable.torch,"手电筒"));
        menuLists.add(new Icon(R.drawable.mike,"麦克风"));
        menuLists.add(new Icon(R.drawable.printer,"打印机"));
        menuLists.add(new Icon(R.drawable.game,"游戏"));

        myAdapter = new MyAdapter<Icon>(menuLists, R.layout.item_icon) {
            @Override
            public void bindView(ViewHolder holder, Icon obj) {
                holder.setImageResource(R.id.img_icon, obj.getiId());
                holder.setText(R.id.tv_name, obj.getiName());
            }
        };

        list_left_drawer.setAdapter(myAdapter);
        list_left_drawer.setOnItemClickListener(this);
    }

    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
        TextView textView = findViewById(R.id.tv_content);
        textView.setText(menuLists.get(position).getiName());

        drawer_layout.closeDrawer(list_left_drawer);
    }
}
  1. 运行App,按住鼠标向右滑动,任意点击一项,主布局文本将对应修改
    摸鱼学Android 二十二 (侧边菜单)

本文地址:https://blog.csdn.net/qq_23470315/article/details/108827410

相关标签: android