DrawerLayout与Fragment的联用
1.xml代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
<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" >
<FrameLayout
android:id= "@+id/fragment_layout"
android:layout_width= "match_parent"
android:layout_height= "match_parent" >
</FrameLayout>
<RelativeLayout
android:id= "@+id/menu_layout"
android:layout_width= "300dp"
android:layout_height= "match_parent"
android:layout_gravity= "left"
android:background= "#ff333333" >
<ListView
android:id= "@+id/menu_listView"
android:layout_width= "match_parent"
android:layout_height= "match_parent" >
</ListView>
</RelativeLayout>
</android.support.v4.widget.DrawerLayout> |
2.MainActivity继承FragmentActivity
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
|
import android.os.Bundle;
import android.app.Activity;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentTransaction;
import android.support.v4.widget.DrawerLayout;
import android.view.Menu;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.RelativeLayout;
import android.widget.AdapterView.OnItemClickListener;
public class MainActivity extends FragmentActivity
{ /*
* DrawerLayout与Fragment的联用
* DrawerLayout相关:
* 1.一般内容层使用framelayout
* 2.slidingLayout需要设置一个layout_grative属性
* 文档建议使用android:layout_gravity="start"
*/
public static final String[] TITLES =
{ "Henry IV (1)" , "Henry V" , "Henry VIII" , "Richard II" , "Richard III" , "Merchant of Venice" , "Othello" , "King Lear" };
private DrawerLayout mDrawer_layout;
private RelativeLayout mMenu_layout;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super .onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mDrawer_layout = (DrawerLayout) findViewById(R.id.drawer_layout);
mMenu_layout = (RelativeLayout) findViewById(R.id.menu_layout);
ListView menu_listview = (ListView) mMenu_layout.findViewById(R.id.menu_listView);
menu_listview.setAdapter( new ArrayAdapter<String>( this , android.R.layout.simple_expandable_list_item_1, TITLES));
//监听菜单
menu_listview.setOnItemClickListener( new DrawerItemClickListener());
}
public class DrawerItemClickListener implements OnItemClickListener
{
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id)
{
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
Fragment fragment = null ;
//根据item点击行号判断启用哪个Fragment
switch (position)
{
case 0 :
fragment = new FirstFragment();
break ;
case 1 :
fragment = new NextFragment();
break ;
default :
break ;
}
ft.replace(R.id.fragment_layout, fragment);
ft.commit();
mDrawer_layout.closeDrawer(mMenu_layout); //点击后关闭mMenu_layout
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu)
{
getMenuInflater().inflate(R.menu.main, menu);
return true ;
}
} |
3.Fragment类
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
public class FirstFragment extends Fragment
{ @Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
View layout = inflater.inflate(R.layout.firstlayout, null );
return layout;
}
} |
1
2
3
4
5
6
7
8
9
|
public class NextFragment extends Fragment
{ @Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
View layout = inflater.inflate(R.layout.nextlayout, null );
return layout;
}
} |
本文转自 glblong 51CTO博客,原文链接:http://blog.51cto.com/glblong/1229561,如需转载请自行联系原作者