本文实例为大家分享了Android实现底部导航栏功能的具体代码,供大家参考,具体内容如下
实验效果:
(1)在drawable文件夹下新建tab_menu_bg.xml文件,具体代码如下:
1
2
3
4
5
6
7
8
|
<? xml version = "1.0" encoding = "utf-8" ?> < selector xmlns:android = "http://schemas.android.com/apk/res/android" > < item android:state_selected = "true" > < shape > < solid android:color = "@color/bg_gray" /> </ shape > </ item > </ selector > |
(2)在drawable文件夹下新建tab_menu_text.xml文件,具体代码如下:
1
2
3
4
5
|
<? xml version = "1.0" encoding = "utf-8" ?> < selector xmlns:android = "http://schemas.android.com/apk/res/android" > < item android:color = "@color/text_green" android:state_selected = "true" /> < item android:color = "@color/text_black" /> </ selector > |
(3)在drawable文件夹下新建tab_menu_personal.xml文件,具体代码如下:
1
2
3
4
5
|
<? xml version = "1.0" encoding = "utf-8" ?> < selector xmlns:android = "http://schemas.android.com/apk/res/android" > < item android:drawable = "@mipmap/menu_personal_on" android:state_selected = "true" /> < item android:drawable = "@mipmap/menu_personal_off" /> </ selector > |
(4)在drawable文件夹下新建tab_menu_send.xml文件,具体代码如下:
1
2
3
4
5
|
<? xml version = "1.0" encoding = "utf-8" ?> < selector xmlns:android = "http://schemas.android.com/apk/res/android" > < item android:drawable = "@mipmap/menu_send_on" android:state_selected = "true" /> < item android:drawable = "@mipmap/menu_send_off" /> </ selector > |
(5)在drawable文件夹下新建tab_menu_list.xml文件,具体代码如下:
1
2
3
4
5
|
<? xml version = "1.0" encoding = "utf-8" ?> < selector xmlns:android = "http://schemas.android.com/apk/res/android" > < item android:drawable = "@mipmap/menu_send_on" android:state_selected = "true" /> < item android:drawable = "@mipmap/menu_send_off" /> </ selector > |
(6)在layout文件夹下的activity_main.xml中具体代码如下:
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
|
<? xml version = "1.0" encoding = "utf-8" ?> < RelativeLayout xmlns:android = "http://schemas.android.com/apk/res/android" xmlns:tools = "http://schemas.android.com/tools" android:id = "@+id/activity_main" android:layout_width = "match_parent" android:layout_height = "match_parent" tools:context = "com.bzu.fshiner.parttimejob.MainActivity" > < RelativeLayout android:id = "@+id/tab_title" android:layout_width = "match_parent" android:layout_height = "48dp" > < TextView android:id = "@+id/tv_top" android:layout_width = "match_parent" android:layout_height = "match_parent" android:gravity = "center" android:textSize = "18sp" android:textColor = "@color/text_black" android:text = "@string/tv_top" /> < View android:layout_width = "match_parent" android:layout_height = "2px" android:background = "@color/text_black" android:layout_alignParentBottom = "true" /> </ RelativeLayout > < LinearLayout android:id = "@+id/tab_menu" android:layout_width = "match_parent" android:layout_height = "56dp" android:orientation = "horizontal" android:layout_alignParentBottom = "true" > < TextView android:id = "@+id/tv_list" android:layout_width = "0dp" android:layout_height = "match_parent" android:layout_weight = "1" android:drawablePadding = "3dp" android:gravity = "center" android:background = "@drawable/tab_menu_bg" android:textColor = "@drawable/tab_menu_text" android:drawableTop = "@drawable/tab_menu_list" android:text = "@string/tv_list" /> < TextView android:id = "@+id/tv_send" android:layout_width = "0dp" android:layout_height = "match_parent" android:layout_weight = "1" android:drawablePadding = "3dp" android:gravity = "center" android:background = "@drawable/tab_menu_bg" android:textColor = "@drawable/tab_menu_text" android:drawableTop = "@drawable/tab_menu_send" android:text = "@string/tv_send" /> < TextView android:id = "@+id/tv_personal" android:layout_width = "0dp" android:layout_height = "match_parent" android:layout_weight = "1" android:drawablePadding = "3dp" android:gravity = "center" android:background = "@drawable/tab_menu_bg" android:textColor = "@drawable/tab_menu_text" android:drawableTop = "@drawable/tab_menu_personal" android:text = "@string/tv_personal" /> </ LinearLayout > < View android:id = "@+id/div_tab_bar" android:layout_width = "match_parent" android:layout_height = "2px" android:layout_above = "@id/tab_menu" /> < FrameLayout android:id = "@+id/fragment_container" android:layout_width = "match_parent" android:layout_height = "match_parent" android:layout_below = "@id/tab_title" android:layout_above = "@id/tab_menu" > </ FrameLayout > </ RelativeLayout > |
(7)在layout文件夹中新建first_fragment.xml文件,具体代码如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
<? xml version = "1.0" encoding = "utf-8" ?> < LinearLayout xmlns:android = "http://schemas.android.com/apk/res/android" android:orientation = "vertical" android:layout_width = "match_parent" android:layout_height = "match_parent" > < TextView android:id = "@+id/tv_content" android:layout_width = "match_parent" android:layout_height = "match_parent" android:gravity = "center" android:text = "哈哈" android:textSize = "20sp" /> </ LinearLayout > |
(8)在MainActivity中具体代码如下:
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
86
87
88
89
90
91
|
package com.bzu.fshiner.parttimejob; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.view.View; import android.widget.FrameLayout; import android.widget.TextView; public class MainActivity extends AppCompatActivity implements View.OnClickListener { private TextView tv_top; private TextView tv_list; private TextView tv_send; private TextView tv_personal; private FrameLayout fragment_container; private FirstFragment f1,f2,f3; @Override protected void onCreate(Bundle savedInstanceState) { super .onCreate(savedInstanceState); setContentView(R.layout.activity_main); //ui组件初始化与事件绑定 tv_top=(TextView) this .findViewById(R.id.tv_top); tv_list=(TextView) this .findViewById(R.id.tv_list); tv_send=(TextView) this .findViewById(R.id.tv_send); tv_personal=(TextView) this .findViewById(R.id.tv_personal); fragment_container=(FrameLayout)findViewById(R.id.fragment_container); tv_list.setOnClickListener( this ); tv_send.setOnClickListener( this ); tv_personal.setOnClickListener( this ); } //重置所有文本的选中状态 public void selected(){ tv_list.setSelected( false ); tv_send.setSelected( false ); tv_personal.setSelected( false ); } //隐藏所有的Fragment private void hideAllFragment(android.app.FragmentTransaction transaction) { if (f1!= null ){ transaction.hide(f1); } if (f2!= null ){ transaction.hide(f2); } if (f3!= null ){ transaction.hide(f3); } } @Override public void onClick(View view){ android.app.FragmentTransaction transaction=getFragmentManager().beginTransaction(); hideAllFragment(transaction); switch (view.getId()){ case R.id.tv_list: selected(); tv_list.setSelected( true ); if (f1== null ){ f1 = new FirstFragment( "第一个Fragment" ); transaction.add(R.id.fragment_container,f1); } else { transaction.show(f1); } break ; case R.id.tv_send: selected(); tv_send.setSelected( true ); if (f2== null ){ f2 = new FirstFragment( "第2个Fragment" ); transaction.add(R.id.fragment_container,f2); } else { transaction.show(f2); } break ; case R.id.tv_personal: selected(); tv_personal.setSelected( true ); if (f3== null ){ f3 = new FirstFragment( "第三个Fragment" ); transaction.add(R.id.fragment_container,f3); } else { transaction.show(f3); } break ; } transaction.commit(); } } |
(9)创建类,类名为FistFragment,其中具体代码如下:
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
|
package com.bzu.fshiner.parttimejob; import android.app.Fragment; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.TextView; /** * Created by Administrator on 2017/5/9. */ public class FirstFragment extends Fragment { private String context; private TextView textView; public FirstFragment(String context) { this .context = context; } public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState){ View view=inflater.inflate(R.layout.first_fragment,container, false ); textView=(TextView)view.findViewById(R.id.tv_content); textView.setText(context); return view; } } |
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。
原文链接:https://blog.csdn.net/shasha1021/article/details/72082022