tablayout+fragment

Android底部和标签导航栏—TabLayout+Fragment 介绍Google官方在2014年Google I/O上推出了全新的设计语言——Material Design。一并推出了一系列实现Material Design效果的控件库——Android Design Support Library。其中,有TabLayout, NavigationView,Floating labels for editing text,Floating Action But 阅读详情

MainActivity

import android.support.design.widget.TabLayout;
import android.support.v4.app.Fragment;
import android.support.v4.view.ViewPager;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;

import java.util.ArrayList;
import java.util.List;

public class MainActivity extends AppCompatActivity {
    private TabLayout tabLayout;
    private List<String> list = new ArrayList<>();
    private ViewPager viewPager;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        tabLayout = (TabLayout) findViewById(R.id.my_tab);
        viewPager = (ViewPager) findViewById(R.id.my_viewpager);
        inittab();
    }
    public void inittab(){
        List<Fragment> fragments=new ArrayList<>();
        fragments.add(new Fragment01());
        fragments.add(new Fragment01());
        fragments.add(new Fragment01());
        fragments.add(new Fragment01());
        fragments.add(new Fragment01());
        fragments.add(new Fragment01());
        fragments.add(new Fragment01());
        fragments.add(new Fragment01());
        fragments.add(new Fragment01());
        fragments.add(new Fragment01());
        viewPager.setAdapter(new MyFragmentAdapter(getSupportFragmentManager(),fragments));
        for (int i=0;i<fragments.size();i++){
            tabLayout.addTab(tabLayout.newTab());
        }
        //tablayout与viewpager关联
        tabLayout.setupWithViewPager(viewPager);
        tabLayout.getTabAt(0).setText("热点");
        tabLayout.getTabAt(1).setText("热点2");
        tabLayout.getTabAt(2).setText("热点3");
        tabLayout.getTabAt(3).setText("热点4");
        tabLayout.getTabAt(4).setText("热点5");
        tabLayout.getTabAt(5).setText("热点6");
        tabLayout.getTabAt(6).setText("热点7");
        tabLayout.getTabAt(7).setText("热点8");
        tabLayout.getTabAt(8).setText("热点9");
        tabLayout.getTabAt(9).setText("热点10");


        /*//为tablayout设置ttitle
        for (int i = 0; i < 10; i++) {
            list.add("热" + i);
            tabLayout.addTab(tabLayout.newTab().setText(list.get(i)));
        }*/
    }
}
Fragment01

import android.os.AsyncTask;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Toast;

import com.google.gson.Gson;
import com.limxing.xlistview.view.XListView;

import java.io.ByteArrayOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLEncoder;
import java.util.List;

/**
 * 
 */

public class Fragment01 extends Fragment implements XListView.IXListViewListener{
    private List<bean.ResultBean.DataBean> list;
    private XListView xListView;
    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View view=inflater.inflate(R.layout.fragment01,container,false);
        xListView=view.findViewById(R.id.my_xlistview);
       // getData("http://apis.juhe.cn/cook/query.php","0","10");
        //getData("http://apis.juhe.cn/cook/query.php",index+"",10+"");
        getData();
        xListView.setPullLoadEnable(true);
        xListView.setPullRefreshEnable(true);
        xListView.setXListViewListener(this);
        return view;
    }

    /*@Override
    public void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
       // getData();
    }*/

    public void getData(){
        new AsyncTask<String, Void, String>() {
            @Override
            protected void onPostExecute(String s) {
                super.onPostExecute(s);
                if(s!=null){
                    Gson gson=new Gson();
                    bean beans=gson.fromJson(s,bean.class);
                    list=beans.getResult().getData();
                    xListView.setAdapter(new MyXlistviewAdapter(list,getActivity()));
                }
            }
            @Override
            protected String doInBackground(String... strings) {

                try {
                    String path=strings[0];
                    URL url=new URL(path);
                    HttpURLConnection connection= (HttpURLConnection) url.openConnection();
                    connection.setRequestMethod("POST");
                    OutputStream os=connection.getOutputStream();
                    os.write("key=1e9834f5ac3a7000a9b13af1040403ae&menu=红烧肉&rn=10".getBytes());
                    //os.write(("key=1e9834f5ac3a7000a9b13af1040403ae&menu=红烧肉&pn="+pn+"&rn="+rn+"").getBytes());
                    os.flush();
                    connection.setConnectTimeout(5000);
                    connection.setReadTimeout(5000);
                    int code=connection.getResponseCode();
                    if(code==HttpURLConnection.HTTP_OK){
                        InputStream is=connection.getInputStream();
                        ByteArrayOutputStream baos=new ByteArrayOutputStream();
                        int len=0;
                        byte[] buffer=new byte[1024];
                        while ((len=is.read(buffer))!=-1){
                            baos.write(buffer,0,len);
                        }
                        is.close();
                        baos.close();
                        return baos.toString();
                    }
                } catch (Exception e) {
                    e.printStackTrace();
                }
                return null;
            }
        }.execute("http://apis.juhe.cn/cook/query.php");
    }


    //下拉刷新
    @Override
    public void onRefresh() {
        getData();
        xListView.stopRefresh(true);
    }

    //上拉加载
    @Override
    public void onLoadMore() {

        getData();

        xListView.stopLoadMore();
    }}
MyFragmentAdaptter

import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import android.view.ViewGroup;

import java.util.List;

/**
 * 
 */

public class MyFragmentAdapter extends FragmentPagerAdapter {
    private List<Fragment> list;

    public MyFragmentAdapter(FragmentManager fm, List<Fragment> list) {
        super(fm);
        this.list = list;
    }

    public MyFragmentAdapter(FragmentManager fm) {
        super(fm);
    }

    @Override
    public Fragment getItem(int position) {
        return list.get(position);
    }

    @Override
    public int getCount() {
        return list.size();
    }

}
MyXlistView

import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;

import com.bumptech.glide.Glide;

import java.util.List;

/**
 * 
 */

public class MyXlistviewAdapter extends BaseAdapter {
    private List<bean.ResultBean.DataBean> list;
    private Context context;

    public MyXlistviewAdapter(List<bean.ResultBean.DataBean> list, Context context) {
        this.list = list;
        this.context = context;
    }

    @Override
    public int getCount() {
        return list.size();
    }

    @Override
    public Object getItem(int i) {
        return list.get(i);
    }

    @Override
    public long getItemId(int i) {
        return i;
    }

    @Override
    public View getView(int i, View view, ViewGroup viewGroup) {
        ViewHolder holder;
        if(view==null){
            holder=new ViewHolder();
            view=View.inflate(context,R.layout.item01,null);
            holder.myContent=view.findViewById(R.id.myContent);
            holder.myIcon=view.findViewById(R.id.myIcon);
            view.setTag(holder);
        }else{
            holder= (ViewHolder) view.getTag();
        }
        holder.myContent.setText(list.get(i).getTitle());
        Glide.with(context).load(list.get(i).getSteps().get(0).getImg()).animate(R.anim.item_alpha_in).into(holder.myIcon);
        return view;
    }
    class ViewHolder{
        TextView myContent;
        ImageView myIcon;
    }
}
activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/activity_main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context="com.example.yuekaodemo01.MainActivity">

    <android.support.design.widget.TabLayout
        android:id="@+id/my_tab"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        app:tabMode="scrollable"
        ></android.support.design.widget.TabLayout>
    <android.support.v4.view.ViewPager
        android:id="@+id/my_viewpager"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        ></android.support.v4.view.ViewPager>

</LinearLayout>
fragment01.xml

<?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:orientation="vertical">
    <com.limxing.xlistview.view.XListView
        android:id="@+id/my_xlistview"
        android:divider="@null"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
    </com.limxing.xlistview.view.XListView>

</LinearLayout>
item01

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal" android:layout_width="match_parent"
    android:layout_height="match_parent">
    <TextView
        android:id="@+id/myContent"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="3333333"
        />
    <ImageView
        android:id="@+id/myIcon"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@mipmap/ic_launcher"
        />

</LinearLayout>


Android开发(1):使用TabLayout+Fragment实现底部栏切换功能 思路 首先要先知道Fragment的基本使用方法,这里可以参考郭霖的《Android第一行代码》第二版的第四章。如果要实现的是四栏(首页、商城、消息、我),那么需要文件如下 4个碎片xml文件+主xml文件+Tab自制xml文件,共6个xml文件 4个Fragment文件 1个主Activity文件和一个工具类DataGenerator文件。 第一步:整体页面xml 首先要理解Fragment... 阅读详情

相关推荐

TabLayout加载多个Fragment

主要就是TabLayout加ViewPager然后实现我们TabLayout的第一个是 Fragment跟其余7个Fragment的动态添加

Star_Q的博客 3639

TabLayout简单使用以及+Fragment配合

我使用的 android studio进行开发的,所以引用TabLayout很简单,只要在build.gradle中加入compile ‘com.android.support:design:22.2.0’即可 或者直接写成(compile “com.android.support:design:$supportLibVersion”)。 ext { supportLibVersion

w630886916的博客 4266

android中TabLayout与Fragment相结合

最近做了一个关于tabLayout的Demo,其中也涉及到了Fragment复用以及传值。 效果图 话不多说,直接上代码 首先需要导入TabLayout依赖 compile 'com.android.support:design:25.0.0' 网上还有另外一个版本的TabLayout的依赖,根据自己的需要选择就好 compile 'com.android.su

weixin_37188254的博客 6165

TabLayout+Fragment实现滑动标签页

文章会持续更新的。绝对干货!!!Android进阶学习全套手册关于实战,我想每一个做开发的都有话要说,对于小白而言,缺乏实战经验是通病,那么除了在实际工作过程当中,我们如何去更了解实战方面的内容呢?实际上,我们很有必要去看一些实战相关的电子书。

2401_84002771的博客 596

TabLayout实现动态加载Fragment

主要讲的就是我们平常用TabLayout实现的时候就不用加载太多的Fragment,我们可以用一个动态的Fragment,就可以实现我们想要的效果

Star_Q的博客 3909

TabLayout ViewPager 复用Fragment

一、主Activity public class MainActivity extends AppCompatActivity { TabLayout tabLayout; ViewPager viewPager; @Override protected void onCreate(Bundle savedInstanceState) { su

qq_29988575的博客 1702

TabLayout+ViewPager+Fragment实现切页展示

写在前面 目前大多数的APP都采用的是几个Tab标签以及多个界面滑动的形式来提供多层次的交互体验,最为常用的做法就是采用TabLayout+ViewPager+Fragment的方式,最近在公司项目中遇到类似的界面,也看了各个论坛很多份博客,但是发现都没有完全把这种方法的坑填完,因此写下这篇博客,一方面是对知识的总结,另一方面也能让其他开发者们少走一些弯路,博客内容主要分为四个方面: T...

yourzeromax的博客 6万+

ViewPager+Fragment+TabLayout最简版本

最终效果 ViewPager+Fragment 首先是ViewPager+Fragment, activity_main.xml: <?xml version="1.0" encoding="utf-8"?> <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schem...

late13的博客 1191

[Android开发] Fragment的子Fragment+TabLayout+ViewPager 的使用

Android Fragment的子Fragment+TabLayout+ViewPager 的使用 文章目录Android Fragment的子Fragment+TabLayout+ViewPager 的使用1 思路分析2 具体实现2.1 Activity 中 Fragment+ViewPager 的使用2.2 Fragment 中子Fragment+TabLayout+ViewPager的使用...

龙王院的博客 1008

Android 使用 TabLayout 切换 Fragment

Log.e(TAG, "onTabSelected: 暴击 " + tab.getText() + " 位置: " + index);Log.e(TAG, "Tab 释放,并且切换最后一次点击位置: " + index);android:theme="@style/ThemeOverlay.犀慕.FullscreenContainer"Log.d(TAG, "Tab 切换出错" + e.getMessage());android:text="通知" />android:text="审核" />

1377

TabLayout+fragment实现滑动到或者点击某fragment该fragment才开始加载数据的一小解决方案

TabLayout+fragment实现滑动到或者点击某fragment该fragment才开始加载数据的一小解决方案 博客链接:http://blog.youkuaiyun.com/abfo12

Android中TabLayout与Fragment相结合

最近做了一个关于tabLayout的Demo,其中也涉及到了Fragment复用以及传值。效果图话不多说,直接上代码首先需要导入TabLayout依赖compile 'com.android.support:design:25.0.0' 网上还有另外一个版本的TabLayout的依赖,根据自己的需要选择就好 compile 'com.android.support:design:22.2.0' ...

甘泉的博客 5454

Android使用TabLayout+Fragment实现顶部选项卡

本文通过实例代码给大家介绍了Android使用TabLayout+Fragment实现顶部选项卡功能,包括TabLyout的使用,感兴趣的朋友参考下本文吧

ViewPage2和Fragment以及Tablayout使用

ViewPage2是基于recycleview的基本上实现方法类似

m0_65715940的博客 2217

Webug4.0 打靶笔记

一、Webug 的安装 (1)基本信息 WeBug 名称定义为”我们的漏洞”靶场环境 ,基础环境是基于 PHP/mysql 制作搭建而成,中级环境与高级环境分别都是由互联网漏洞事件而收集的漏洞存在的操作环境。部分漏洞是基于Windows操作系统的漏洞所以将WeBug的web环境都装在了一个纯净版的Windows 2003的虚拟机中。在 webug3.0 发布后的四百多天 226安全团队终于在大年初二发布了 webug 的 4.0 版本。 (2)虚拟机的安装 最新超详细VMware虚拟机下载与安装_隐

m0_60716947的博客 6128

移动开发(一):使用.NET MAUI开发第一个安卓APP

它是.NET 多平台应用 UI (.NET MAUI) 是一个跨平台框架,用于使用 C# 和 XAML 创建本机移动和桌面应用。使用 .NET MAUI,可从单个共享代码库开发可在 Android、iOS、macOS 和 Windows 上运行的应用。.NET MAUI 是一款开放源代码应用,是 Xamarin.Forms 的进化版,从移动场景扩展到了桌面场景,并从头重新生成了 UI 控件,以提高性能和可扩展性。

IT技术分享社区 2708

TabLayout , ViewPager , Fragment

TabLayout 一. 页面切换指示器 , 使用前导入Android Design包:implementation'com.android.support:design:23.3.0' 二. 添加标签 //第一种方法: java代码中添加 TabLayout tabLayout = findViewById(R.id.tab); tabLayout.add...

Krehizi的博客 455

Postman调试海康ISAPI接口全记录:从鉴权失败到成功修改设备名的踩坑指南

本文详细记录了使用Postman调试海康ISAPI接口的全过程,从鉴权失败到成功修改设备名的实战经验。涵盖Digest认证机制、XML请求体构造、常见错误排查及代码实现过渡,帮助开发者高效解决海康设备集成中的各种问题。

weixin_42620913的博客 662

TabLayout+ViewPager+Fragment

TabLayout Tablayout继承自HorizontalScrollView,用作页面切换指示器,因使用简便功能强大而广泛使用在App中。 TabLayout中如何让当前标签永远位于屏幕中间? TabLayout如何设置指示器的宽度包裹内容? https://www.jianshu.com/p/fde38f367019 tabMode有两种属性:fixed和 scrollable;fixed:指的是固定tab;scrollable指的是tab可滑动。 tabGravity有两种属性:center和f

weixin_42547039的博客 1749

(遇到问题)(已解决)word敲入的公式转化为mathtype

https://www.mathtype.cn/wenti/wordgongshi-zhuanhuan.html 现在越来越多的人在文档中编辑公式的时候会选择MathType来编辑,因为它包含有众多的数学符号和模板,编辑公式时非常方便。但是也有一些人在编辑公式时没有使用MathType公式编辑器,直接使用Word中自带的公式编辑器来编辑的。当我们需要要共享一份文件的时候,这种用自带公式编辑器编辑出来的文件,在我们安装有MathType公式编辑器的电脑里打开时,双击公式没有反应,是无法对它们进行修改的.

计算机视觉 1万+

使用 Simulink 实现基于相控阵雷达的波束形成技术

摘要:本文详细介绍了利用MATLAB Simulink和Phased Array System工具箱实现相控阵雷达波束形成的完整流程。主要内容包括:1)创建Simulink模型;2)设计天线阵列参数;3)信号生成模块配置;4)波束形成算法实现;5)结果可视化方法;6)仿真调试与优化;7)代码导出与部署。通过分步指导,读者可以掌握从理论到实践的完整开发流程,包括关键参数设置和算法实现示例。该方案适用于军事、气象等领域的雷达系统开发,并支持后续嵌入式和智能算法集成。

xiaoheshang_123的博客 182

Android Tablayout+ViewPager+Fragment

正文 我们在进行开发的时候可能需要使用Fragment,更多时候是结合Tablayout和ViewPager来使用,我们的使用步骤一般是 获取Tablayout和ViewPager控件的实例 初始化各个Fragment 初始化自定义的FragmentPagerAdapter 给ViewPager设置适配器,即设置FragmentPagerAdapter 让Tablayout和ViewPager绑...

Jokaer的博客 1234

inno setup自定义卸载程序和美化

也就是DisplayName,因为我们在第一步的时候,将卸载程序名称也写入了注册表,所以,我们直接从注册表读DisplayName字段即可。1.要实现inno setup自定义卸载程序,首先需要关闭自带的卸载程序。在[Setup]的字段关闭卸载程序步骤和页面。2.删除应用程序目录里能够删除的并且返回进度。3.自定义卸载程序相关的注册表信息。4.删除启动菜单栏和guid注册表。2.自定义快捷方式和程序菜单。

cs821984831的博客 2348

基于androidx的Fragment使用,Fragment嵌套TabLayout+Fragment+ViewPager

从不久之前,我把我的android stuidio软件更新到3.几来着,就是google新出的androidx环境,写项目的时候发现,Fragment的导包居然有两个,刚开始使用android下面的包,会出现方法过期,怎么看怎么不顺眼,然后就导入androidx,一系列报错,这是最尴尬的! 比如: private var mfragmentManager: FragmentManager?...

沐的博客 1万+

国密SSL通信的调试技巧

前面写了几篇国密开发相关的文章:解读国密非对称加密算法SM2啥?双证书?详解国密SM2的加密和解密详解国密SSL ECC_SM4_SM3套件详解国密SM2的数字签名这篇文章来聊一聊国密S...

云水木石 3206

基于DNN神经网络的多输入多输出数据回归预测(附带Matlab代码)

假设我们的输入数据包含n个特征,输出数据包含m个特征。在本文中,我们将介绍如何使用DNN(深度神经网络)实现多输入多输出数据回归预测,并提供相应的Matlab代码。需要注意的是,上述代码中的DNN模型是一个简化的示例,您可以根据实际任务的复杂程度和要求进行相应的调整和优化。综上所述,我们介绍了如何使用DNN神经网络实现多输入多输出数据回归预测,并提供了相应的Matlab代码。函数对DNN模型进行训练,其中输入数据需要转置,以适应网络的输入要求。最后,我们使用训练好的模型对测试数据进行预测,并打印预测结果。

DevWizard的博客 1068
上一篇: 二次测试
下一篇: 大Demo
Xu三关正
博客等级 码龄9年 3粉丝 14原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值