摸鱼学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 实例
- 主布局,最外层是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>
- 自定义Adapter,复用前几节的MyAdapter
- 初始化侧滑菜单,重写点击事件
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);
}
}
- 运行App,按住鼠标向右滑动,任意点击一项,主布局文本将对应修改
本文地址:https://blog.csdn.net/qq_23470315/article/details/108827410