问题描述
我如何可以将图像头添加到我的抽屉式导航栏的布局像这样的
这是我的code:MainActivity.java
包com.webileapps.navdrawer;
进口android.app.AlarmManager;
进口android.app.AlertDialog;
进口android.app.PendingIntent;
进口android.content.Context;
进口android.content.DialogInterface;
进口android.content.res.Configuration;
进口android.graphics.drawable.Drawable;
进口android.os.Bundle;
进口android.support.v4.app.ActionBarDrawerToggle;
进口android.support.v4.app.Fragment;
进口android.support.v4.view.GravityCompat;
进口android.support.v4.widget.DrawerLayout;
进口android.text.InputType;
进口android.view.View;
进口android.widget.EditText;
进口android.widget.ExpandableListView;
进口android.widget.ImageView;
进口com.actionbarsherlock.app.SherlockFragmentActivity;
进口com.webileapps.navdrawer.House_Fragment.Garage_Fragment;
进口com.webileapps.navdrawer.House_Fragment.Hall_Fragment;
进口com.webileapps.navdrawer.House_Fragment.Kitchen_Fragment;
进口com.webileapps.navdrawer.menu.Settings.Account preference;
进口com.webileapps.navdrawer.menu.Settings.DialogChangeAccount;
进口com.webileapps.navdrawer.menu.Settings.DialogChangeCity;
进口com.webileapps.navdrawer.menu.Settings.DialogSettingsApp;
进口com.webileapps.navdrawer.menu.Settings.DialogSupport;
进口com.webileapps.navdrawer.menu.Settings.City preference;
进口com.webileapps.navdrawer.menu.Settings.DialogueConnexion;
进口的java.util.ArrayList;
进口的java.util.Calendar;
进口的java.util.HashMap;
进口的java.util.List;
公共类MainActivity扩展SherlockFragmentActivity
实现DialogChangeCity.dialogDoneListenerCity,
DialogChangeAccount.dialogDoneListenerAccount,
DialogSettingsApp.dialogDoneListenerSett,
DialogSupport.dialogDoneListenerSupp,
DialogueConnexion.dialogDoneListenerConn {
DrawerLayout mDrawerLayout;
DrawerLayout mDrawerLayoutR;
ExpandableListView mDrawerList;
ExpandableListView mDrawerListR;
ActionBarDrawerToggle mDrawerToggle;
ActionBarDrawerToggle mDrawerToggleR;
私人的CharSequence mDrawerTitle;
私人的CharSequence mDrawerTitleR;
私人的CharSequence mTitle;
私人的CharSequence mTitleR;
名单<型号:GT; listDataHeader;
名单<型号:GT; listDataHeaderR;
HashMap的<型号,列表和LT;型号:GT;> listDataChild;
ExpandableListAdapter listAdapter;
ExpandableListAdapter listAdapterR;
@覆盖
保护无效的onCreate(包savedInstanceState){
super.onCreate(savedInstanceState);
的setContentView(R.layout.activity_main);
mTitle = mDrawerTitle =的getTitle();
mTitleR = mDrawerTitleR =的getTitle();
mDrawerLayout =(DrawerLayout)findViewById(R.id.drawer_layout);
mDrawerList =(ExpandableListView)findViewById(R.id.left_drawer);
mDrawerListR =(ExpandableListView)findViewById(R.id.right_drawer);
prepareListData();
prepareListDataRight();
//设置自定义影子覆盖
抽屉打开时的主要内容
listAdapter =新ExpandableListAdapter(这一点,
listDataHeader,listDataChild);
listAdapterR =新ExpandableListAdapter(这一点,listDataHeaderR,NULL);
mDrawerLayout.setDrawerShadow(R.drawable.drawer_shadow,
GravityCompat.START);
// mDrawerLayout.setDrawerShadow(R.drawable.up_24,GravityCompat.END);
//设置抽屉的列表视图项,然后单击监听器
/ * mDrawerList.setAdapter(新ArrayAdapter<字符串>(这一点,
R.layout.drawer_list_item,mRoomTitles)); * /
mDrawerList.setAdapter(listAdapter);
mDrawerListR.setAdapter(listAdapterR);
//mDrawerList.setOnItemClickListener(
新DrawerItemClickListener());
mDrawerListR.setOnGroupClickListener(新ExpandableListView。
OnGroupClickListener(){
@覆盖
公共布尔onGroupClick(ExpandableListView扩展
列表显示,
视图中查看,INT I,长L){
开关(ⅰ){
情况下0:
DialogSettingsApp dialogSettingsApp =
新DialogSettingsApp();
dialogSettingsApp。
秀(getFragmentManager(),diagSett);
打破;
情况1:
DialogChangeAccount dialogChangeAccount =
新DialogChangeAccount();
dialogChangeAccount。
秀(getFragmentManager(),diagA);
打破;
案例2:
DialogChangeCity dialogChangeCity =
新DialogChangeCity();
dialogChangeCity.show(getFragmentManager(),diagC);
打破;
案例3:
DialogSupport dialogSupport =新DialogSupport();
dialogSupport.show(getFragmentManager(),diagSupp);
打破;
壳体4:
DialogueConnexion dialogueConnexion =
新DialogueConnexion();
dialogueConnexion。
秀(getFragmentManager(),diagConn);
打破;
}
返回false;
}
});
mDrawerList.setOnGroupClickListener(新ExpandableListView。
OnGroupClickListener(){
@覆盖
公共布尔onGroupClick(ExpandableListView父,视图V,
INT groupPosition,长ID){
片段FRG = NULL;
开关(groupPosition){
情况下0:
getSupportFragmentManager()
.beginTransaction()
。新增(R.id.content,PageSlidingHomeFragment.newInstance()
,PageSlidingHomeFragment.TAG).commit();
mDrawerList.setItemChecked(groupPosition,真正的);
mDrawerList.setSelection(groupPosition);
mDrawerLayout.closeDrawer(mDrawerList);
打破;
情况1:
打破;
案例2:
FRG =新Kitchen_Fragment();
打破;
案例3:
FRG =新Garage_Fragment();
打破;
壳体4:
FRG =新Hall_Fragment();
打破;
}
如果(FRG!= NULL){
getSupportFragmentManager()的BeginTransaction()
.replace(R.id.content,FRG).commit();
//更新所选项目和标题,然后关上抽屉
mDrawerList.setItemChecked(groupPosition,真正的);
mDrawerList.setSelection(groupPosition);
mDrawerLayout.closeDrawer(mDrawerList);
}
返回false;
}
});
//使动作条的应用程序图标,表现为动作切换导航抽屉
getSupportActionBar()setDisplayHomeAsUpEnabled(真)。
getSupportActionBar()setHomeButtonEnabled(真)。
// ActionBarDrawerToggle联系在一起的适当交互
//滑动抽屉和操作栏中的应用程序图标之间
mDrawerToggleR =新ActionBarDrawerToggle(这一点,
mDrawerLayout,
R.drawable.down_24,
R.string.drawer_open,
R.string.drawer_close
){
公共无效onDrawerClosed(查看视图){
。getSupportActionBar()的setTitle(mTitle);
invalidateOptionsMenu(); //创建调用
//在prepareOptionsMenu()
}
公共无效onDrawerOpened(查看drawerView){
。getSupportActionBar()的setTitle(mDrawerTitleR);
invalidateOptionsMenu(); //创建调用
//在prepareOptionsMenu()
}
};
mDrawerToggle =新ActionBarDrawerToggle(这一点,/ *主机活动* /
mDrawerLayout,/ * DrawerLayout对象* /
R.drawable.ic_drawer,/ *
导航抽屉图像,以取代上插入符* /
R.string.drawer_open,/ *
开放抽屉说明访问* /
R.string.drawer_close / *
关闭的抽屉说明访问* /
){
公共无效onDrawerClosed(查看视图){
。getSupportActionBar()的setTitle(mTitle);
invalidateOptionsMenu(); //创建调用
//在prepareOptionsMenu()
}
公共无效onDrawerOpened(查看drawerView){
。getSupportActionBar()的setTitle(mDrawerTitle);
invalidateOptionsMenu(); //创建调用
//在prepareOptionsMenu()
}
};
mDrawerLayout.setDrawerListener(mDrawerToggle);
mDrawerLayout.setDrawerListener(mDrawerToggleR);
如果(savedInstanceState == NULL){
选择信息(0);
}
}
@覆盖
公共布尔onCreateOptionsMenu(com.actionbarsherlock.view.Menu菜单){
com.actionbarsherlock.view.MenuInflater
充气= getSupportMenuInflater();
inflater.inflate(R.menu.main,菜单);
返回super.onCreateOptionsMenu(菜单);
}
@覆盖
公共布尔onOptionsItemSelected(
com.actionbarsherlock.view.MenuItem项){
开关(item.getItemId()){
案例android.R.id.home:{
mDrawerLayout.closeDrawer(mDrawerListR);
如果(mDrawerLayout.isDrawerOpen(mDrawerList)){
mDrawerLayout.closeDrawer(mDrawerList);
} 其他 {
mDrawerLayout.openDrawer(mDrawerList);
}
打破;
}
案例R.id.action_contact:{
mDrawerLayout.closeDrawer(mDrawerList);
如果(mDrawerLayout.isDrawerOpen(mDrawerListR)){
mDrawerLayout.closeDrawer(mDrawerListR);
} 其他 {
mDrawerLayout.openDrawer(mDrawerListR);
}
打破;
}
}
返回super.onOptionsItemSelected(项目);
}
公共无效showInputDialog(){
AlertDialog.Builder建设者=新AlertDialog.Builder(本);
builder.setTitle(切换城市);
最后的EditText输入=新的EditText(本);
input.setInputType(InputType.TYPE_CLASS_TEXT);
builder.setView(输入);
builder.setPositiveButton(去,新
DialogInterface.OnClickListener(){
@覆盖
公共无效的onClick(DialogInterface对话,诠释它){
changeCity(input.getText()的toString());
}
});
builder.show();
}
公共无效changeCity(字符串市){
新城区preference(本).setCity(市);
}
//导航抽屉的点击侦听器的ListView
/ *私有类DrawerItemClickListener工具
ListView.OnItemClickListener {
@覆盖
公共无效onItemClick(适配器视图<>父,查看查看
,INT位置,长的id){
选择信息(位置);
}
}
* /
@覆盖
保护无效onPostCreate(包savedInstanceState){
super.onPostCreate(savedInstanceState);
//同步发生onRestoreInstanceState后切换状态。
mDrawerToggle.syncState();
}
@覆盖
公共无效onConfigurationChanged(配置NEWCONFIG){
super.onConfigurationChanged(NEWCONFIG);
//传递任何配置更改抽屉切换
mDrawerToggle.onConfigurationChanged(NEWCONFIG);
}
私人无效选择信息(INT位置){
开关(位置){
情况下0:
getSupportFragmentManager()
.beginTransaction()
。新增(R.id.content,
PageSlidingHomeFragment.newInstance(),
PageSlidingHomeFragment.TAG).commit();
打破;
}
//更新所选项目和标题,然后关上抽屉
mDrawerList.setItemChecked(位置,真正的);
mDrawerList.setSelection(位置);
mDrawerLayout.closeDrawer(mDrawerList);
}
私人无效prepareListDataRight(){
listDataHeaderR =新的ArrayList<型号>();
listDataHeaderR.add(新模型(R.drawable.settings_24,
应用程序设置));
listDataHeaderR.add(新模型(R.drawable.edit_user_24,
更新账户));
listDataHeaderR.add(新模型(R.drawable.edit_24,切换城市));
listDataHeaderR.add(新模型(R.drawable.quest_24,支持));
listDataHeaderR.add(新模型(R.drawable。
ic_action_user,断开));
}
私人无效prepareListData(){
listDataHeader =新的ArrayList<型号>();
listDataChild =新的HashMap<型号,列表和LT;型号:GT;>();
//添加子数据
listDataHeader.add(新模型(R.drawable.home24,家));
listDataHeader.add(新模型(房间));
listDataHeader.add(新模型(R.drawable.kitchen_24,厨房));
listDataHeader.add(新模型(R.drawable.garage_24,车库));
listDataHeader.add(新模型(R.drawable.room_24,霍尔));
//添加子数据
名单<型号:GT;家庭=新的ArrayList<型号>();
home.add(新模型(R.drawable.settings_24,设置));
home.add(新模型(R.drawable.devices_24,设备));
home.add(新模型(R.drawable.weather_24,天气));
名单<型号:GT;客房=新的ArrayList<型号>();
rooms.add(新模型(R.drawable.bed_c_24,1SR儿童房));
rooms.add(新模型(R.drawable.bed_c_24,2SD儿童房));
rooms.add(新模型(R.drawable.bedroom_24,父母房));
rooms.add(新模型(R.drawable.hotel_24,客人房));
rooms.add(新模型(R.drawable.dining_room_24,餐厅));
rooms.add(新模型(R.drawable.livingroom_24,客厅));
rooms.add(新模型(R.drawable.office_24,办公室));
rooms.add(新模型(R.drawable.bathroom_24,浴室一楼));
rooms.add(新模型(R.drawable.bathroom_24,浴室二楼));
//头,子数据
listDataChild.put(listDataHeader.get(1),客房);
}
@覆盖
公共无效onDone(字符串文本,布尔州){
如果(州){
changeCity(文本);
//this.recreate();
restartSelf();
}
}
私人无效restartSelf(){
AlarmManager AM =(AlarmManager)gettSystemService(上下文。
ALARM_SERVICE);
am.set(AlarmManager.RTC_WAKEUP,Calendar.getInstance()
.getTimeInMillis()
+ 1000,//1秒
PendingIntent.getActivity(此,0,getIntent(),
PendingIntent.FLAG_ONE_SHOT
| PendingIntent.FLAG_CANCEL_CURRENT));
完();
}
@覆盖
公共无效onDoneA(字符串登录,字符串opwd,字符串npwd){
如果(登录=!&放大器;&安培; opwd =!&放大器;&安培; npwd =!){
changeAccount(登录,opwd,npwd);
}
}
私人无效changeAccount(字符串登录,字符串opwd,字符串npwd){
新账户preference(本).setAccountL(登录);
新账户preference(本).setAccountOP(opwd);
新账户preference(本).setAccountNP(npwd);
}
@覆盖
公共无效onDone(){
INT X = 0;
}
}
activity_main.xml
< android.support.v4.widget.DrawerLayout的xmlns:机器人=HTTP://模式
.android.com / APK / RES /安卓
机器人:ID =@ + ID / drawer_layout
机器人:layout_width =FILL_PARENT
机器人:layout_height =FILL_PARENT>
< RelativeLayout的
的xmlns:机器人=http://schemas.android.com/apk/res/android
的xmlns:程序=http://schemas.android.com/apk/res-auto
的xmlns:工具=http://schemas.android.com/tools
机器人:layout_width =match_parent机器人:ID =@ + ID /内容
机器人:layout_height =match_parent>
< / RelativeLayout的>
<! - 导航抽屉 - >
< ExpandableListView
机器人:ID =@ + ID / left_drawer
机器人:layout_width =300dp
机器人:layout_height =match_parent
机器人:layout_gravity =开始
机器人:后台=#000
机器人:choiceMode =singleChoice
机器人:分隔=@色/ abs__bright_foreground_disabled_holo_dark
机器人:dividerHeight =2DP/>
< ExpandableListView
机器人:ID =@ + ID / right_drawer
机器人:layout_width =200dp
机器人:layout_height =300dp
机器人:layout_gravity =结束
机器人:后台=#000
机器人:choiceMode =singleChoice
机器人:分隔=@色/ abs__bright_foreground_disabled_holo_dark
机器人:dividerHeight =2DP/>
< /android.support.v4.widget.DrawerLayout>
ExpandableListAdapter.java
包com.webileapps.navdrawer;
进口的java.util.HashMap;
进口的java.util.List;
进口android.content.Context;
进口android.graphics.Typeface;
进口android.view.LayoutInflater;
进口android.view.View;
进口android.view.ViewGroup;
进口android.widget.BaseExpandableListAdapter;
进口android.widget.ImageView;
进口android.widget.TextView;
公共类ExpandableListAdapter扩展BaseExpandableListAdapter {
私人语境_context;
私人列表<型号:GT; _listDataHeader; //标题标题
//子数据的标题标题格式,子标题
私人的HashMap<型号,列表和LT;型号:GT;> _listDataChild;
公共ExpandableListAdapter(上下文的背景下,名单,其中,模型与GT; listDataHeader,
HashMap的<型号,列表和LT;型号:GT;> listChildData){
this._context =背景;
this._listDataHeader = listDataHeader;
this._listDataChild = listChildData;
}
@覆盖
公共对象getChild(INT groupPosition,诠释childPosititon){
返回this._listDataChild.get(这一点。
_listDataHeader.get(groupPosition))得到(childPosititon)。
}
@覆盖
众长getChildId(INT groupPosition,诠释childPosition){
返回childPosition;
}
@覆盖
公共查看getChildView(INT groupPosition,最终诠释childPosition,
布尔isLastChild,查看convertView,ViewGroup中父){
最终模型childText =(模型)getChild(groupPosition,childPosition);
如果(convertView == NULL){
LayoutInflater infalInflater =(LayoutInflater)this._context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = infalInflater.inflate(R.layout.list_item,NULL);
}
TextView的txtListChild =(TextView中)convertView
.findViewById(R.id.lblListItem);
ImageView的IconListChild =(ImageView的)convertView.findViewById
(R.id.item_icon_child);
IconListChild.setImageResource(childText.getIcon());
txtListChild.setText(childText.getTitle());
返回convertView;
}
@覆盖
公众诠释getChildrenCount(INT groupPosition){
INT I = 0;
开关(groupPosition){
情况1:
I = this._listDataChild.get
(this._listDataHeader.get(groupPosition))的大小()。
打破;
默认:
I = 0;
打破;
}
返回我;
}
@覆盖
众模特getGroup(INT groupPosition){
返回this._listDataHeader.get(groupPosition);
}
@覆盖
公众诠释getGroupCount(){
返回this._listDataHeader.size();
}
@覆盖
众长getGroupId(INT groupPosition){
返回groupPosition;
}
@覆盖
公共查看getGroupView(INT groupPosition,布尔isExpanded,
查看convertView,ViewGroup中父){
型号headerTitle =(模型)getGroup(groupPosition);
如果(convertView == NULL){
LayoutInflater infalInflater =(LayoutInflater)this._context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = infalInflater.inflate(R.layout.list_group,NULL);
}
TextView的lblListHeader =(TextView中)convertView
.findViewById(R.id.lblListHeader);
ImageView的IconListHeader =(ImageView的)convertView.findViewById
(R.id.item_icon_group);
IconListHeader.setImageResource(headerTitle.getIcon());
lblListHeader.setTypeface(NULL,Typeface.BOLD);
lblListHeader.setText(headerTitle.getTitle());
返回convertView;
}
@覆盖
公共布尔hasStableIds(){
返回false;
}
@覆盖
公共布尔isChildSelectable(INT groupPosition,诠释childPosition){
返回true;
}
}
在导航抽屉布局的XML文件。以上drawerView和您的父母布局中添加图像视图,如下所示:
< ImageView的
机器人:ID =@ + ID /图像
机器人:layout_width =280dp
机器人:layout_height =140dp
机器人:SRC =respective_source_of_image/>
此应该足够了。希望这有助于。
使用回收站视图创建一个抽屉式导航。回收站视图用于现在最。在你的抽屉式导航栏片段有你的布局文件,如下图所示。这能让你实现你的目标:
< RelativeLayout的的xmlns:机器人=http://schemas.android.com/apk/res/android
的xmlns:工具=http://schemas.android.com/tools
机器人:layout_width =match_parent
机器人:layout_height =match_parent
工具:上下文=com.ms.t.tms.NavigationDrawerFragment>
< ImageView的
机器人:ID =@ + ID /图像
机器人:layout_width =280dp
机器人:layout_height =140dp
机器人:SRC =respective_image_src/>
< android.support.v7.widget.RecyclerView
机器人:ID =@ + ID / drawerView
机器人:layout_width =match_parent
机器人:layout_height =match_parent
机器人:layout_below =@ + ID /图像
机器人:背景=@色/ colorPrimary>< /android.support.v7.widget.RecyclerView>
< / RelativeLayout的>
how can i add an image header to my navigation drawer layout like this one
and this is my code :MainActivity.java
package com.webileapps.navdrawer;
import android.app.AlarmManager;
import android.app.AlertDialog;
import android.app.PendingIntent;
import android.content.Context;
import android.content.DialogInterface;
import android.content.res.Configuration;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.support.v4.app.ActionBarDrawerToggle;
import android.support.v4.app.Fragment;
import android.support.v4.view.GravityCompat;
import android.support.v4.widget.DrawerLayout;
import android.text.InputType;
import android.view.View;
import android.widget.EditText;
import android.widget.ExpandableListView;
import android.widget.ImageView;
import com.actionbarsherlock.app.SherlockFragmentActivity;
import com.webileapps.navdrawer.House_Fragment.Garage_Fragment;
import com.webileapps.navdrawer.House_Fragment.Hall_Fragment;
import com.webileapps.navdrawer.House_Fragment.Kitchen_Fragment;
import com.webileapps.navdrawer.menu.Settings.AccountPreference;
import com.webileapps.navdrawer.menu.Settings.DialogChangeAccount;
import com.webileapps.navdrawer.menu.Settings.DialogChangeCity;
import com.webileapps.navdrawer.menu.Settings.DialogSettingsApp;
import com.webileapps.navdrawer.menu.Settings.DialogSupport;
import com.webileapps.navdrawer.menu.Settings.CityPreference;
import com.webileapps.navdrawer.menu.Settings.DialogueConnexion;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.HashMap;
import java.util.List;
public class MainActivity extends SherlockFragmentActivity
implements DialogChangeCity.dialogDoneListenerCity,
DialogChangeAccount.dialogDoneListenerAccount,
DialogSettingsApp.dialogDoneListenerSett,
DialogSupport.dialogDoneListenerSupp,
DialogueConnexion.dialogDoneListenerConn {
DrawerLayout mDrawerLayout;
DrawerLayout mDrawerLayoutR;
ExpandableListView mDrawerList;
ExpandableListView mDrawerListR;
ActionBarDrawerToggle mDrawerToggle;
ActionBarDrawerToggle mDrawerToggleR;
private CharSequence mDrawerTitle;
private CharSequence mDrawerTitleR;
private CharSequence mTitle;
private CharSequence mTitleR;
List<Model> listDataHeader;
List<Model> listDataHeaderR;
HashMap<Model, List<Model>> listDataChild;
ExpandableListAdapter listAdapter;
ExpandableListAdapter listAdapterR;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mTitle = mDrawerTitle = getTitle();
mTitleR = mDrawerTitleR = getTitle();
mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
mDrawerList = (ExpandableListView) findViewById(R.id.left_drawer);
mDrawerListR = (ExpandableListView) findViewById(R.id.right_drawer);
prepareListData();
prepareListDataRight();
// set a custom shadow that overlays
the main content when the drawer opens
listAdapter = new ExpandableListAdapter(this,
listDataHeader, listDataChild);
listAdapterR = new ExpandableListAdapter(this, listDataHeaderR,null);
mDrawerLayout.setDrawerShadow(R.drawable.drawer_shadow,
GravityCompat.START);
// mDrawerLayout.setDrawerShadow(R.drawable.up_24,GravityCompat.END);
// set up the drawer's list view with items and click listener
/* mDrawerList.setAdapter(new ArrayAdapter<String>(this,
R.layout.drawer_list_item, mRoomTitles));*/
mDrawerList.setAdapter(listAdapter);
mDrawerListR.setAdapter(listAdapterR);
//mDrawerList.setOnItemClickListener(
new DrawerItemClickListener());
mDrawerListR.setOnGroupClickListener(new ExpandableListView.
OnGroupClickListener() {
@Override
public boolean onGroupClick(ExpandableListView expandable
ListView,
View view, int i, long l) {
switch(i){
case 0:
DialogSettingsApp dialogSettingsApp =
new DialogSettingsApp();
dialogSettingsApp.
show(getFragmentManager(),"diagSett");
break;
case 1:
DialogChangeAccount dialogChangeAccount =
new DialogChangeAccount();
dialogChangeAccount.
show(getFragmentManager(),"diagA");
break;
case 2:
DialogChangeCity dialogChangeCity =
new DialogChangeCity();
dialogChangeCity.show(getFragmentManager(),"diagC");
break;
case 3:
DialogSupport dialogSupport = new DialogSupport();
dialogSupport.show(getFragmentManager(),"diagSupp");
break;
case 4:
DialogueConnexion dialogueConnexion =
new DialogueConnexion();
dialogueConnexion.
show(getFragmentManager(),"diagConn");
break;
}
return false;
}
});
mDrawerList.setOnGroupClickListener(new ExpandableListView.
OnGroupClickListener() {
@Override
public boolean onGroupClick(ExpandableListView parent, View v,
int groupPosition, long id) {
Fragment frg = null;
switch (groupPosition) {
case 0:
getSupportFragmentManager()
.beginTransaction()
.add(R.id.content, PageSlidingHomeFragment.newInstance()
, PageSlidingHomeFragment.TAG).commit();
mDrawerList.setItemChecked(groupPosition, true);
mDrawerList.setSelection(groupPosition);
mDrawerLayout.closeDrawer(mDrawerList);
break;
case 1:
break;
case 2:
frg = new Kitchen_Fragment();
break;
case 3:
frg = new Garage_Fragment();
break;
case 4:
frg = new Hall_Fragment();
break;
}
if (frg != null) {
getSupportFragmentManager().beginTransaction()
.replace(R.id.content, frg).commit();
// update selected item and title, then close the drawer
mDrawerList.setItemChecked(groupPosition, true);
mDrawerList.setSelection(groupPosition);
mDrawerLayout.closeDrawer(mDrawerList);
}
return false;
}
});
// enable ActionBar app icon to behave as action to toggle nav drawer
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setHomeButtonEnabled(true);
// ActionBarDrawerToggle ties together the the proper interactions
// between the sliding drawer and the action bar app icon
mDrawerToggleR=new ActionBarDrawerToggle(this,
mDrawerLayout,
R.drawable.down_24,
R.string.drawer_open,
R.string.drawer_close
){
public void onDrawerClosed(View view) {
getSupportActionBar().setTitle(mTitle);
invalidateOptionsMenu(); // creates call to
// onPrepareOptionsMenu()
}
public void onDrawerOpened(View drawerView) {
getSupportActionBar().setTitle(mDrawerTitleR);
invalidateOptionsMenu(); // creates call to
// onPrepareOptionsMenu()
}
};
mDrawerToggle = new ActionBarDrawerToggle(this, /* host Activity */
mDrawerLayout, /* DrawerLayout object */
R.drawable.ic_drawer, /*
nav drawer image to replace 'Up' caret */
R.string.drawer_open, /*
"open drawer" description for accessibility */
R.string.drawer_close /*
"close drawer" description for accessibility */
) {
public void onDrawerClosed(View view) {
getSupportActionBar().setTitle(mTitle);
invalidateOptionsMenu(); // creates call to
// onPrepareOptionsMenu()
}
public void onDrawerOpened(View drawerView) {
getSupportActionBar().setTitle(mDrawerTitle);
invalidateOptionsMenu(); // creates call to
// onPrepareOptionsMenu()
}
};
mDrawerLayout.setDrawerListener(mDrawerToggle);
mDrawerLayout.setDrawerListener(mDrawerToggleR);
if (savedInstanceState == null) {
selectItem(0);
}
}
@Override
public boolean onCreateOptionsMenu(com.actionbarsherlock.view.Menu menu){
com.actionbarsherlock.view.MenuInflater
inflater = getSupportMenuInflater();
inflater.inflate(R.menu.main, menu);
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(
com.actionbarsherlock.view.MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home: {
mDrawerLayout.closeDrawer(mDrawerListR);
if (mDrawerLayout.isDrawerOpen(mDrawerList)) {
mDrawerLayout.closeDrawer(mDrawerList);
} else {
mDrawerLayout.openDrawer(mDrawerList);
}
break;
}
case R.id.action_contact:{
mDrawerLayout.closeDrawer(mDrawerList);
if (mDrawerLayout.isDrawerOpen(mDrawerListR)) {
mDrawerLayout.closeDrawer(mDrawerListR);
} else {
mDrawerLayout.openDrawer(mDrawerListR);
}
break;
}
}
return super.onOptionsItemSelected(item);
}
public void showInputDialog() {
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("Change city");
final EditText input = new EditText(this);
input.setInputType(InputType.TYPE_CLASS_TEXT);
builder.setView(input);
builder.setPositiveButton("Go", new
DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
changeCity(input.getText().toString());
}
});
builder.show();
}
public void changeCity(String city) {
new CityPreference(this).setCity(city);
}
// The click listener for ListView in the navigation drawer
/*private class DrawerItemClickListener implements
ListView.OnItemClickListener {
@Override
public void onItemClick(AdapterView<?> parent, View view
, int position,long id) {
selectItem(position);
}
}
*/
@Override
protected void onPostCreate(Bundle savedInstanceState) {
super.onPostCreate(savedInstanceState);
// Sync the toggle state after onRestoreInstanceState has occurred.
mDrawerToggle.syncState();
}
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
// Pass any configuration change to the drawer toggles
mDrawerToggle.onConfigurationChanged(newConfig);
}
private void selectItem(int position) {
switch (position) {
case 0:
getSupportFragmentManager()
.beginTransaction()
.add(R.id.content,
PageSlidingHomeFragment.newInstance(),
PageSlidingHomeFragment.TAG).commit();
break;
}
// update selected item and title, then close the drawer
mDrawerList.setItemChecked(position, true);
mDrawerList.setSelection(position);
mDrawerLayout.closeDrawer(mDrawerList);
}
private void prepareListDataRight(){
listDataHeaderR = new ArrayList<Model>();
listDataHeaderR.add(new Model(R.drawable.settings_24,
"App Settings"));
listDataHeaderR.add(new Model(R.drawable.edit_user_24,
"Update Account"));
listDataHeaderR.add(new Model(R.drawable.edit_24, "Change City"));
listDataHeaderR.add(new Model(R.drawable.quest_24, "Support"));
listDataHeaderR.add(new Model(R.drawable.
ic_action_user, "Disconnection"));
}
private void prepareListData() {
listDataHeader = new ArrayList<Model>();
listDataChild = new HashMap<Model, List<Model>>();
// Adding child data
listDataHeader.add(new Model(R.drawable.home24, "Home"));
listDataHeader.add(new Model("Rooms"));
listDataHeader.add(new Model(R.drawable.kitchen_24, "Kitchen"));
listDataHeader.add(new Model(R.drawable.garage_24, "Garage"));
listDataHeader.add(new Model(R.drawable.room_24, "Hall"));
// Adding child data
List<Model> home = new ArrayList<Model>();
home.add(new Model(R.drawable.settings_24, "Settings"));
home.add(new Model(R.drawable.devices_24, "Devices"));
home.add(new Model(R.drawable.weather_24, "Weather"));
List<Model> rooms = new ArrayList<Model>();
rooms.add(new Model(R.drawable.bed_c_24, "1sr Child room"));
rooms.add(new Model(R.drawable.bed_c_24, "2sd Child room"));
rooms.add(new Model(R.drawable.bedroom_24, "Parents room"));
rooms.add(new Model(R.drawable.hotel_24, "Guests room"));
rooms.add(new Model(R.drawable.dining_room_24, "Dining room"));
rooms.add(new Model(R.drawable.livingroom_24, "Living room"));
rooms.add(new Model(R.drawable.office_24, "Office"));
rooms.add(new Model(R.drawable.bathroom_24, "Bathroom 1st floor"));
rooms.add(new Model(R.drawable.bathroom_24, "Bathroom 2nd floor"));
// Header, Child data
listDataChild.put(listDataHeader.get(1), rooms);
}
@Override
public void onDone(String text, boolean state) {
if (state) {
changeCity(text);
//this.recreate();
restartSelf();
}
}
private void restartSelf() {
AlarmManager am = (AlarmManager) gettSystemService(Context.
ALARM_SERVICE);
am.set(AlarmManager.RTC_WAKEUP,Calendar.getInstance()
.getTimeInMillis()
+ 1000, // one second
PendingIntent.getActivity(this, 0, getIntent(),
PendingIntent.FLAG_ONE_SHOT
| PendingIntent.FLAG_CANCEL_CURRENT));
finish();
}
@Override
public void onDoneA(String login, String opwd, String npwd) {
if(login!="" && opwd!="" && npwd!=""){
changeAccount(login,opwd,npwd);
}
}
private void changeAccount(String login, String opwd, String npwd) {
new AccountPreference(this).setAccountL(login);
new AccountPreference(this).setAccountOP(opwd);
new AccountPreference(this).setAccountNP(npwd);
}
@Override
public void onDone() {
int x = 0;
}
}
activity_main.xml
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas
.android.com/apk/res/android"
android:id="@+id/drawer_layout"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent" android:id="@+id/content"
android:layout_height="match_parent" >
</RelativeLayout>
<!-- The navigation drawer -->
<ExpandableListView
android:id="@+id/left_drawer"
android:layout_width="300dp"
android:layout_height="match_parent"
android:layout_gravity="start"
android:background="#000"
android:choiceMode="singleChoice"
android:divider="@color/abs__bright_foreground_disabled_holo_dark"
android:dividerHeight="2dp" />
<ExpandableListView
android:id="@+id/right_drawer"
android:layout_width="200dp"
android:layout_height="300dp"
android:layout_gravity="end"
android:background="#000"
android:choiceMode="singleChoice"
android:divider="@color/abs__bright_foreground_disabled_holo_dark"
android:dividerHeight="2dp" />
</android.support.v4.widget.DrawerLayout>
ExpandableListAdapter.java
package com.webileapps.navdrawer;
import java.util.HashMap;
import java.util.List;
import android.content.Context;
import android.graphics.Typeface;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseExpandableListAdapter;
import android.widget.ImageView;
import android.widget.TextView;
public class ExpandableListAdapter extends BaseExpandableListAdapter {
private Context _context;
private List<Model> _listDataHeader; // header titles
// child data in format of header title, child title
private HashMap<Model, List<Model>> _listDataChild;
public ExpandableListAdapter(Context context, List<Model> listDataHeader,
HashMap<Model, List<Model>> listChildData) {
this._context = context;
this._listDataHeader = listDataHeader;
this._listDataChild = listChildData;
}
@Override
public Object getChild(int groupPosition, int childPosititon) {
return this._listDataChild.get(this.
_listDataHeader.get(groupPosition)).get(childPosititon);
}
@Override
public long getChildId(int groupPosition, int childPosition) {
return childPosition;
}
@Override
public View getChildView(int groupPosition, final int childPosition,
boolean isLastChild, View convertView, ViewGroup parent) {
final Model childText = (Model) getChild(groupPosition, childPosition);
if (convertView == null) {
LayoutInflater infalInflater = (LayoutInflater) this._context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = infalInflater.inflate(R.layout.list_item, null);
}
TextView txtListChild = (TextView) convertView
.findViewById(R.id.lblListItem);
ImageView IconListChild = (ImageView) convertView.findViewById
(R.id.item_icon_child);
IconListChild.setImageResource(childText.getIcon());
txtListChild.setText(childText.getTitle());
return convertView;
}
@Override
public int getChildrenCount(int groupPosition) {
int i=0;
switch (groupPosition) {
case 1:
i= this._listDataChild.get
(this._listDataHeader.get(groupPosition)).size();
break;
default:
i=0;
break;
}
return i;
}
@Override
public Model getGroup(int groupPosition) {
return this._listDataHeader.get(groupPosition);
}
@Override
public int getGroupCount() {
return this._listDataHeader.size();
}
@Override
public long getGroupId(int groupPosition) {
return groupPosition;
}
@Override
public View getGroupView(int groupPosition, boolean isExpanded,
View convertView, ViewGroup parent) {
Model headerTitle = (Model) getGroup(groupPosition);
if (convertView == null) {
LayoutInflater infalInflater = (LayoutInflater) this._context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = infalInflater.inflate(R.layout.list_group, null);
}
TextView lblListHeader = (TextView) convertView
.findViewById(R.id.lblListHeader);
ImageView IconListHeader = (ImageView) convertView.findViewById
(R.id.item_icon_group);
IconListHeader.setImageResource(headerTitle.getIcon());
lblListHeader.setTypeface(null, Typeface.BOLD);
lblListHeader.setText(headerTitle.getTitle());
return convertView;
}
@Override
public boolean hasStableIds() {
return false;
}
@Override
public boolean isChildSelectable(int groupPosition, int childPosition) {
return true;
}
}
In the Navigation Drawer layout xml file. Above drawerView and inside your parent layout add an image view as shown below:
<ImageView
android:id="@+id/image"
android:layout_width="280dp"
android:layout_height="140dp"
android:src="respective_source_of_image" />
This should be sufficient. Hope this helps.
Use Recycler View to create a navigation drawer. Recycler view is used most now. In your navigation drawer fragment have your layout file as shown below. This make you achieve your objective:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.ms.t.tms.NavigationDrawerFragment">
<ImageView
android:id="@+id/image"
android:layout_width="280dp"
android:layout_height="140dp"
android:src="respective_image_src" />
<android.support.v7.widget.RecyclerView
android:id="@+id/drawerView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@+id/image"
android:background="@color/colorPrimary"></android.support.v7.widget.RecyclerView>
</RelativeLayout>
这篇关于我可以在导航抽屉布局添加图像头的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!