电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

Android 中使用RadioGroup和Fragment實現底部導航欄的功能

瀏覽:103日期:2022-09-18 10:31:43

在一些購物商城中經常會遇到這類效果,效果圖如下:

先看效果圖

Android 中使用RadioGroup和Fragment實現底部導航欄的功能

步驟一:完成對主界面main.xml的創建:

<?xml version='1.0' encoding='utf-8'?><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:layout_height='match_parent' tools:context='.MainActivity'> <FrameLayoutandroid: android:layout_width='match_parent'android:layout_height='match_parent'android:layout_alignParentTop='true'/> <RadioGroupandroid:layout_width='match_parent'android:layout_height='wrap_content'android: android:layout_alignParentBottom='true'android:orientation='horizontal'><RadioButton android: android:layout_width='0dp' android:layout_height='match_parent' android:layout_weight='1' android:button='@null' android:drawableTop='@drawable/rb_home_selector' android:text='首頁' /><RadioButton android: android:layout_width='0dp' android:layout_height='match_parent' android:layout_weight='1' android:button='@null' android:drawableTop='@drawable/rb_discover_selector' android:text='熱賣' /><RadioButton android: android:layout_width='0dp' android:layout_height='match_parent' android:layout_weight='1' android:button='@null' android:drawableTop='@drawable/rb_cart_selector' android:text='購物車' /><RadioButton android: android:layout_width='0dp' android:layout_height='match_parent' android:layout_weight='1' android:button='@null' android:drawableTop='@drawable/rb_user_selector' android:text='我的' /> </RadioGroup></RelativeLayout>

radioButton中重復使用的樣式:被抽取出來在style中寫出

<style name='fragment'><item name='android:layout_width'>match_parent</item><item name='android:layout_height'>match_parent</item><item name='android:padding'>5dp</item><item name='android:gravity'>center</item><item name='android:textColor'>@drawable/rb_text_color</item><item name='android:textSize'>16sp</item><item name='android:textStyle'>normal</item> </style>

點擊RadioButton之后,導航欄文字顏色發生改變,聲明在drawable中名字為:rb_text_color代碼如下:

<?xml version='1.0' encoding='utf-8'?><selector xmlns:android='http://schemas.android.com/apk/res/android'> <item android:state_selected='true' android:color='#FF0000'/> <item android:color='#808080'/></selector>

導航欄圖標發生變化這里只寫其中一個其他三個都基本一樣:

<?xml version='1.0' encoding='utf-8'?><selector xmlns:android='http://schemas.android.com/apk/res/android'> <item android:drawable='@drawable/icon_cartfill_press' android:state_selected='true' /> <item android:drawable='@drawable/icon_cart' /></selector>

完成這些基本步驟之后,接下來就需要寫Fragment的布局

<?xml version='1.0' encoding='utf-8'?><LinearLayout xmlns:android='http://schemas.android.com/apk/res/android' android:layout_width='match_parent' android:layout_height='match_parent' android:gravity='center'> <TextViewandroid: android:layout_width='wrap_content'android:layout_height='wrap_content'android:text='購物車'android:textSize='30sp' /></LinearLayout>

寫出其中一個另外三個類似。

之后后臺代碼中創建Fragment,這里也寫其中一個:CartFragment

package com.example.fragmentdemo;import android.os.Bundle;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.TextView;import androidx.annotation.NonNull;import androidx.annotation.Nullable;import androidx.fragment.app.Fragment;public class CartFragment extends Fragment { private View view; private TextView tv_home; @Nullable @Override public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {if (view==null){ view = inflater.inflate(R.layout.cart_fragment,container,false);}return view; }}

步驟二:在MainActivity中,完成對fragment的切換功能具體注釋已在代碼中給出。

package com.example.fragmentdemo;import androidx.appcompat.app.AppCompatActivity;import androidx.fragment.app.Fragment;import androidx.fragment.app.FragmentManager;import androidx.fragment.app.FragmentTransaction;import android.os.Bundle;import android.util.Log;import android.view.View;import android.widget.RadioButton;import android.widget.RadioGroup;import java.time.LocalDate;import java.util.ArrayList;import java.util.List;public class MainActivity extends AppCompatActivity implements RadioGroup.OnCheckedChangeListener { private RadioButton rb_home,rb_discover,rb_cart,rb_user; private RadioGroup rg_group; private List<Fragment> fragments; private int position=0; private static final String TAG = 'MainActivity'; @Override protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);rb_home=findViewById(R.id.rb_home);rb_discover=findViewById(R.id.rb_discover);rb_cart=findViewById(R.id.rb_cart);rb_user=findViewById(R.id.rb_user);rg_group=findViewById(R.id.rg_group);//默認選中第一個rb_home.setSelected(true);rg_group.setOnCheckedChangeListener(this);//初始化fragmentinitFragment();//默認布局,選第一個defaultFragment(); } private void defaultFragment() {FragmentManager fragmentManager = getSupportFragmentManager();FragmentTransaction transaction = fragmentManager.beginTransaction();transaction.replace(R.id.fragment_layout,fragments.get(0));transaction.commit(); } private void setSelected() {rb_home.setSelected(false);rb_discover.setSelected(false);rb_cart.setSelected(false);rb_user.setSelected(false); } private void initFragment() {fragments = new ArrayList<>();fragments.add(0,new HomeFragment());fragments.add(1,new DiscoverFragment());fragments.add(2,new CartFragment());fragments.add(3,new UserFragment()); } @Override public void onCheckedChanged(RadioGroup group, int i) {//獲取fragment管理類對象FragmentManager fragmentManager = getSupportFragmentManager();//拿到fragmentManager的觸發器FragmentTransaction transaction = fragmentManager.beginTransaction();switch (i){ case R.id.rb_home:position=0;//調用replace方法,將fragment,替換到fragment_layout這個id所在UI,或者這個控件上面來//這是創建replace這個事件,如果想要這個事件執行,需要把這個事件提交給觸發器//用commit()方法transaction.replace(R.id.fragment_layout,fragments.get(0));//將所有導航欄設成默認色setSelected();rb_home.setSelected(true);break; case R.id.rb_discover:position=1;transaction.replace(R.id.fragment_layout,fragments.get(1));//將所有導航欄設成默認色setSelected();rb_discover.setSelected(true);break; case R.id.rb_cart:position=2;transaction.replace(R.id.fragment_layout,fragments.get(2));//將所有導航欄設成默認色setSelected();rb_cart.setSelected(true);break; case R.id.rb_user:position=3;transaction.replace(R.id.fragment_layout,fragments.get(3));//將所有導航欄設成默認色setSelected();rb_user.setSelected(true);break;}//事件的提交transaction.commit(); }}

這樣就完成了一個簡單的底部導航欄功能,這個只能通過點擊切換fragment,不能通過左右滑動去切換fragment。

以上就是Android 中使用RadioGroup+Fragment實現底部導航欄的功能的詳細內容,更多關于android 底部導航欄的資料請關注好吧啦網其它相關文章!

標簽: Android
相關文章:
主站蜘蛛池模板: 桐城新闻网—桐城市融媒体中心主办| 长沙中央空调维修,中央空调清洗维保,空气能热水工程,价格,公司就找维小保-湖南维小保环保科技有限公司 | X光检测仪_食品金属异物检测机_X射线检测设备_微现检测 | Eiafans.com_环评爱好者 环评网|环评论坛|环评报告公示网|竣工环保验收公示网|环保验收报告公示网|环保自主验收公示|环评公示网|环保公示网|注册环评工程师|环境影响评价|环评师|规划环评|环评报告|环评考试网|环评论坛 - Powered by Discuz! | 电缆接头-防爆电缆接头-格兰头-金属电缆接头-防爆填料函 | 压滤机滤板_厢式_隔膜_板框压滤机滤板厂家价格型号材质-大凯环保 | ORP控制器_ORP电极价格-上优泰百科 | CCE素质教育博览会 | CCE素博会 | 教育展 | 美育展 | 科教展 | 素质教育展 | 环氧乙烷灭菌器_压力蒸汽灭菌器_低温等离子过氧化氢灭菌器 _低温蒸汽甲醛灭菌器_清洗工作站_医用干燥柜_灭菌耗材-环氧乙烷灭菌器_脉动真空压力蒸汽灭菌器_低温等离子灭菌设备_河南省三强医疗器械有限责任公司 | CCE素质教育博览会 | CCE素博会 | 教育展 | 美育展 | 科教展 | 素质教育展 | EFM 022静电场测试仪-套帽式风量计-静电平板监测器-上海民仪电子有限公司 | 鹤壁创新仪器公司-全自动量热仪,定硫仪,煤炭测硫仪,灰熔点测定仪,快速自动测氢仪,工业分析仪,煤质化验仪器 | 精密模具制造,注塑加工,吹塑和吹瓶加工,EPS泡沫包装生产 - 济南兴田塑胶有限公司 | 江苏全风,高压风机,全风环保风机,全风环形高压风机,防爆高压风机厂家-江苏全风环保科技有限公司(官网) | 超声波清洗机_细胞破碎仪_实验室超声仪器_恒温水浴-广东洁盟深那仪器 | 厂厂乐-汇聚海量采购信息的B2B微营销平台-厂厂乐官网 | 电销卡 防封电销卡 不封号电销卡 电话销售卡 白名单电销卡 电销系统 外呼系统 | 内六角扳手「厂家」-温州市威豪五金工具有限公司 | 工业PH计|工业ph酸度计|在线PH计价格-合肥卓尔仪器仪表有限公司 济南画室培训-美术高考培训-山东艺霖艺术培训画室 | 品牌策划-品牌设计-济南之式传媒广告有限公司官网-提供品牌整合丨影视创意丨公关活动丨数字营销丨自媒体运营丨数字营销 | POS机办理_个人pos机免费领取-银联pos机申请首页 | 西装定制/做厂家/公司_西装订做/制价格/费用-北京圣达信西装 | 玉米加工设备,玉米深加工机械,玉米糁加工设备.玉米脱皮制糁机 华豫万通粮机 | 棉柔巾代加工_洗脸巾oem_一次性毛巾_浴巾生产厂家-杭州禾壹卫品科技有限公司 | 不锈钢反应釜,不锈钢反应釜厂家-价格-威海鑫泰化工机械有限公司 不干胶标签-不干胶贴纸-不干胶标签定制-不干胶标签印刷厂-弗雷曼纸业(苏州)有限公司 | 网带通过式抛丸机,,网带式打砂机,吊钩式,抛丸机,中山抛丸机生产厂家,江门抛丸机,佛山吊钩式,东莞抛丸机,中山市泰达自动化设备有限公司 | 动库网动库商城-体育用品专卖店:羽毛球,乒乓球拍,网球,户外装备,运动鞋,运动包,运动服饰专卖店-正品运动品网上商城动库商城网 - 动库商城 | CCE素质教育博览会 | CCE素博会 | 教育展 | 美育展 | 科教展 | 素质教育展 | 成都珞石机械 - 模温机、油温机、油加热器生产厂家 | 船用烟火信号弹-CCS防汛救生圈-船用救生抛绳器(海威救生设备) | 成都离婚律师|成都结婚律师|成都离婚财产分割律师|成都律师-成都离婚律师网 | 锂电池砂磨机|石墨烯砂磨机|碳纳米管砂磨机-常州市奥能达机械设备有限公司 | 济南玻璃安装_济南玻璃门_济南感应门_济南玻璃隔断_济南玻璃门维修_济南镜片安装_济南肯德基门_济南高隔间-济南凯轩鹏宇玻璃有限公司 | 流变仪-热分析联用仪-热膨胀仪厂家-耐驰科学仪器商贸 | 手机存放柜,超市储物柜,电子储物柜,自动寄存柜,行李寄存柜,自动存包柜,条码存包柜-上海天琪实业有限公司 | 上海恒驭仪器有限公司-实验室平板硫化机-小型平板硫化机-全自动平板硫化机 | 重庆监控_电子围栏设备安装公司_门禁停车场管理系统-劲浪科技公司 | 压滤机滤板_厢式_隔膜_板框压滤机滤板厂家价格型号材质-大凯环保 | 琉璃瓦-琉璃瓦厂家-安徽盛阳新型建材科技有限公司 | 运动木地板厂家_体育木地板安装_篮球木地板选购_实木运动地板价格 | TPE_TPE热塑性弹性体_TPE原料价格_TPE材料厂家-惠州市中塑王塑胶制品公司- 中塑王塑胶制品有限公司 |