android 自定义抽屉,如何在android中创建自定义导航抽屉

对我来说更简单的解决方案是:

注意事项:此解决方案需要Android Studio提供的自动生成的导航抽屉活动。

类DrawerItem,CustomDrawerAdapter和布局custom_drawer_item.xml均取自本教程。

1.创建此类以包装自定义抽屉项:public class DrawerItem {

String ItemName;

int imgResID;

public DrawerItem(String itemName, int imgResID) {

super();

ItemName = itemName;

this.imgResID = imgResID;

}

public String getItemName() {

return ItemName;

}

public void setItemName(String itemName) {

ItemName = itemName;

}

public int getImgResID() {

return imgResID;

}

public void setImgResID(int imgResID) {

this.imgResID = imgResID;

}}

2.为抽屉项创建自定义布局(custom_drawer_item.xml):

android:layout_width="fill_parent"

android:layout_height="fill_parent" >

android:id="@+id/itemLayout"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:layout_alignParentLeft="true"

android:orientation="vertical"

android:layout_marginTop="0dp"

android:background="?android:attr/activatedBackgroundIndicator">

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:minHeight="55dp">

android:id="@+id/drawer_icon"

android:layout_width="wrap_content"

android:layout_height="wrap_content"/>

android:id="@+id/drawer_itemName"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:textAppearance="?android:attr/textAppearanceLarge"/>

android:layout_width="match_parent"

android:layout_height="1dp"

android:layout_marginBottom="1dp"

android:layout_marginTop="1dp"

android:layout_marginLeft="10dp"

android:layout_marginRight="10dp"

android:background="#DADADC">

3.创建自定义适配器:import java.util.List;import android.app.Activity;import android.content.Context;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.ArrayAdapter;import android.widget.ImageView;import android.widget.TextView;public class CustomDrawerAdapter extends ArrayAdapter {Context context;List drawerItemList;int layoutResID;public CustomDrawerAdapter(Context context, int layoutResourceID, List listItems) {

super(context, layoutResourceID, listItems);

this.context = context;

this.drawerItemList = listItems;

this.layoutResID = layoutResourceID;}@Overridepublic View getView(int position, View convertView, ViewGroup parent) {

// TODO Auto-generated method stub

DrawerItemHolder drawerHolder;

View view = convertView;

if (view == null) {

LayoutInflater inflater = ((Activity) context).getLayoutInflater();

drawerHolder = new DrawerItemHolder();

view = inflater.inflate(layoutResID, parent, false);

drawerHolder.ItemName = (TextView)view.findViewById(R.id.drawer_itemName);

drawerHolder.icon = (ImageView) view.findViewById(R.id.drawer_icon);

view.setTag(drawerHolder);

} else {

drawerHolder = (DrawerItemHolder) view.getTag();

}

DrawerItem dItem = (DrawerItem) this.drawerItemList.get(position);

drawerHolder.icon.setImageDrawable(view.getResources().getDrawable(

dItem.getImgResID()));

drawerHolder.ItemName.setText(dItem.getItemName());

return view;}private static class DrawerItemHolder {

TextView ItemName;

ImageView icon;}}

4.在自动生成的NavigationDrawerFragment类onCreateView方法中,替换自动生成的适配器:ArrayList dataList = new ArrayList();dataList.add(new DrawerItem(getString(R.string.title_section1), R.drawable.ic_action_1));dataList.add(new DrawerItem(getString(R.string.title_section2), R.drawable.ic_action_2));dataList.add(new DrawerItem(getString(R.string.title_section3), R.drawable.ic_action_3));mDrawerListView.setAdapter(new CustomDrawerAdapter(

getActivity(),

R.layout.custom_drawer_item,

dataList));

请记住替换R.string.title_sectionN和R.drawable.ic_action_N您自己的资源。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值