返回顶部
首页 > 资讯 > 精选 >如何在Android项目中使用ViewPager对radiogroup进行关联
  • 341
分享到

如何在Android项目中使用ViewPager对radiogroup进行关联

androidviewpagerradiogroup 2023-05-31 10:05:19 341人浏览 八月长安
摘要

如何在Android项目中使用ViewPager对radiogroup进行关联?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。Android ViewPager与radiog

如何在Android项目中使用ViewPager对radiogroup进行关联?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

Android ViewPager与radiogroup实现关联步骤

实例化ViewPager

通过LayoutInflater加载布局,返回View结果

把生成的每一个View对象添加到List集合

实例化适配器,传递View集合

在适配器中继承自PagerAdapter,实现内部的四个方法

  • getCount(); 返回视图的数量

  • isViewFromObject(); 是否通过对象加载视图 View==object

  • instantiateltem(); 加载当前页面(通过container.addView();添加视图)返回个给用户

  • destroyItem(); 销毁滑出的视图(通过container.removerView();销毁视图)

实例化每个RadioButton

点击每个RaidoButton时,切换不同的页面(viewPager.setCurrentltem(下标))

当页面切换后,还要把当前的导航栏变为绿色

  • 设置文本颜色的setTextColor(getResources().getColor(R.color.tvGreen));

  • 设置文本的上方的图片的,四个参数分别为,左、上、右、下setCompoundDrawablesWithIntrinsicBounds (null,getResources().getDrawable)(R.drawable.call_t),null,null);

当你每次点击之前的时候,添加一个方法,清除方法,(清理之 前的所有导航栏的状态,置为灰色)

实现滑动监听需要addOnPagerChangeListener

在onPagerSelected方法中,根据position页面的下标判断分别设置对应的底部导航栏状态

代码演示

在主布局文件中引入android-support-v4.jar包并添加RadioGroup并在RadioGroup中添加RadioButton用于显示导航栏

 <?xml version="1.0" encoding="utf-8"?><LinearLayout  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"  android:orientation="vertical"  tools:context="com.example.cxy.viewpager.MainActivity">  <android.support.v4.view.ViewPager    android:id="@+id/viewPager"    android:layout_width="match_parent"    android:layout_height="0dp"    android:layout_weight="9">  </android.support.v4.view.ViewPager>  <RadioGroup    android:id="@+id/radioGroup"    android:layout_width="match_parent"    android:layout_height="0dp"    android:layout_weight="1"    android:background="#F4F3F3"    android:orientation="horizontal">    <RadioButton      android:id="@+id/radioButton1"      android:layout_width="0dp"      android:layout_height="match_parent"      android:layout_weight="1"      android:button="@null"      android:drawableTop="@drawable/mess_t"      android:gravity="center"      android:text="微信"      android:textColor="#11CD6E"/>    <RadioButton      android:id="@+id/radioButton2"      android:layout_width="0dp"      android:layout_height="match_parent"      android:layout_weight="1"      android:button="@null"      android:drawableTop="@drawable/call_f"      android:gravity="center"      android:text="通讯录"      android:textColor="@android:color/darker_gray"/>    <RadioButton      android:id="@+id/radioButton3"      android:layout_width="0dp"      android:layout_height="match_parent"      android:layout_weight="1"      android:button="@null"      android:drawableTop="@drawable/show_f"      android:gravity="center"      android:text="发现"      android:textColor="@android:color/darker_gray"/>    <RadioButton      android:id="@+id/radioButton4"      android:layout_width="0dp"      android:layout_height="match_parent"      android:layout_weight="1"      android:button="@null"      android:drawableTop="@drawable/my"      android:gravity="center"      android:text="我"      android:textColor="@android:color/darker_gray"/>  </RadioGroup></LinearLayout>

ViewPager需要适配器继承于PagerAdapter

 package com.example.cxy.viewpager.adapter;import android.support.v4.view.PagerAdapter;import android.view.View;import android.view.ViewGroup;import java.util.List;public class MyViewPagerAdpter extends PagerAdapter {  private List<View> mList;  public MyViewPagerAdpter(List<View> list) {    mList = list;  }  //返回视图数量  @Override  public int getCount() {    return mList.size();  }  //是否通过对象加载视图  @Override  public boolean isViewFromObject(View view, Object object) {    return view == object;  }  //加载当前页面  @Override  public Object instantiateItem(ViewGroup container, int position) {    container.addView(mList.get(position));    return mList.get(position);//View  }  //销毁滑出视图  @Override  public void destroyItem(ViewGroup container, int position, Object object) {    container.removeView(mList.get(position));  }}

新建一个fragment包,在包中新建OneFragment类用于滑动展示,新建布局文件fragmentone.xml并添加TextView用于添加不同页面的内容,共有四个这里只写一个

OneFragment类

package com.example.cxy.viewpager.fragment;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 com.example.cxy.viewpager.R;public class OneFragment extends Fragment{  @Nullable  @Override  public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {    View view = inflater.inflate(R.layout.fragmentone, null);    return view;  }}

fragmentone.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">  <TextView    android:textSize="30sp"    android:id="@+id/textView"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:text="这是微信页面"/></LinearLayout>

编写主类

package com.example.cxy.viewpager;import android.os.Bundle;import android.support.v4.view.ViewPager;import android.support.v7.app.AppCompatActivity;import android.view.LayoutInflater;import android.view.View;import android.widget.RadioButton;import android.widget.RadioGroup;import com.example.cxy.viewpager.adapter.MyViewPagerAdpter;import java.util.ArrayList;import java.util.List;public class MainActivity extends AppCompatActivity implements RadioGroup.OnCheckedChangeListener, ViewPager.OnPageChangeListener {  private ViewPager mViewPager;  private List<View> mList;  private RadioGroup mRadioGroup;  private RadioButton weChatBtn, msgBtn, showBtn, myBtn;  @Override  protected void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    setContentView(R.layout.activity_main);    //初始化所有控件    initView();  }  private void initView() {    //实例化ViewPager    mViewPager = (ViewPager) findViewById(R.id.viewPager);    //实例化Radiogroup    mRadioGroup = (RadioGroup) findViewById(R.id.radioGroup);    //给RadioGroup添加监听    mRadioGroup.setOnCheckedChangeListener(this);    //实例化RadioButton    weChatBtn = (RadioButton) findViewById(R.id.radioButton1);    msgBtn = (RadioButton) findViewById(R.id.radioButton2);    showBtn = (RadioButton) findViewById(R.id.radioButton3);    myBtn = (RadioButton) findViewById(R.id.radioButton4);    //实例化List数组    mList = new ArrayList<>();    View view1 = LayoutInflater.from(this).inflate(R.layout.fragmentone, null);    View view2 = LayoutInflater.from(this).inflate(R.layout.fragmenttwo, null);    View view3 = LayoutInflater.from(this).inflate(R.layout.fragmentthree, null);    View view4 = LayoutInflater.from(this).inflate(R.layout.fragmentfour, null);    //把生成的每一个View对象添加到集合中    mList.add(view1);    mList.add(view2);    mList.add(view3);    mList.add(view4);    //实例化适配器    MyViewPagerAdpter adapter = new MyViewPagerAdpter(mList);    //给ViewPager添加适配器    mViewPager.setAdapter(adapter);    //给ViewPager添加监听事件    mViewPager.addOnPageChangeListener(this);  }  @Override  public void onCheckedChanged(RadioGroup group, int checkedId) {    //清理所有导航栏的状态    clearState();    switch (checkedId) {      case R.id.radioButton1:        //给ViewPager设置当前布局        mViewPager.setCurrentItem(0);        //给RadioButton设置文本颜色        weChatBtn.setTextColor(getResources().getColor(R.color.tvGreen));        //给RadioButton设置文本上方的图片        weChatBtn.setCompoundDrawablesWithIntrinsicBounds(null, getResources().getDrawable(R.drawable.mess_t), null, null);        break;      case R.id.radioButton2:        mViewPager.setCurrentItem(1);        msgBtn.setTextColor(getResources().getColor(R.color.tvGreen));        msgBtn.setCompoundDrawablesWithIntrinsicBounds(null, getResources().getDrawable(R.drawable.call_t), null, null);        break;      case R.id.radioButton3:        mViewPager.setCurrentItem(2);        showBtn.setTextColor(getResources().getColor(R.color.tvGreen));        showBtn.setCompoundDrawablesWithIntrinsicBounds(null, getResources().getDrawable(R.drawable.show_t), null, null);        break;      case R.id.radioButton4:        mViewPager.setCurrentItem(3);        myBtn.setTextColor(getResources().getColor(R.color.tvGreen));        myBtn.setCompoundDrawablesWithIntrinsicBounds(null, getResources().getDrawable(R.drawable.my_t), null, null);        break;    }  }  //初始化底部导航栏  private void clearState() {    weChatBtn.setTextColor(getResources().getColor(android.R.color.darker_gray));    msgBtn.setTextColor(getResources().getColor(android.R.color.darker_gray));    showBtn.setTextColor(getResources().getColor(android.R.color.darker_gray));    myBtn.setTextColor(getResources().getColor(android.R.color.darker_gray));    weChatBtn.setCompoundDrawablesWithIntrinsicBounds(null, getResources().getDrawable(R.drawable.mess_f), null, null);    msgBtn.setCompoundDrawablesWithIntrinsicBounds(null, getResources().getDrawable(R.drawable.call_f), null, null);    showBtn.setCompoundDrawablesWithIntrinsicBounds(null, getResources().getDrawable(R.drawable.show_f), null, null);    myBtn.setCompoundDrawablesWithIntrinsicBounds(null, getResources().getDrawable(R.drawable.my), null, null);  }  //滑动过程中的动作  @Override  public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {  }  //选择某个页面松手后会被调用  @Override  public void onPageSelected(int position) {    //清理所有导航栏的状态    clearState();    switch (position) {      //使用Switch拿到下标定义当滑动到相应位置小点显示颜色      case 0:        //当页面切换后,还要把当前的导航栏变为绿色        weChatBtn.setTextColor(getResources().getColor(R.color.tvGreen));        //设置文本的上方的图片的,四个参数分别为,左、上、右、下        weChatBtn.setCompoundDrawablesWithIntrinsicBounds(null, getResources().getDrawable(R.drawable.mess_t), null, null);        break;      case 1:        msgBtn.setTextColor(getResources().getColor(R.color.tvGreen));        msgBtn.setCompoundDrawablesWithIntrinsicBounds(null, getResources().getDrawable(R.drawable.call_t), null, null);        break;      case 2:        showBtn.setTextColor(getResources().getColor(R.color.tvGreen));        showBtn.setCompoundDrawablesWithIntrinsicBounds(null, getResources().getDrawable(R.drawable.show_t), null, null);        break;      case 3:        myBtn.setTextColor(getResources().getColor(R.color.tvGreen));        myBtn.setCompoundDrawablesWithIntrinsicBounds(null, getResources().getDrawable(R.drawable.my_t), null, null);        break;    }  }  //手指放上去,松开,拖动都会被调用  @Override  public void onPageScrollStateChanged(int state) {  }}

关于如何在Android项目中使用ViewPager对radiogroup进行关联问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注编程网精选频道了解更多相关知识。

--结束END--

本文标题: 如何在Android项目中使用ViewPager对radiogroup进行关联

本文链接: https://lsjlt.com/news/224844.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 如何在Android项目中使用ViewPager对radiogroup进行关联
    如何在Android项目中使用ViewPager对radiogroup进行关联?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。Android ViewPager与radiog...
    99+
    2023-05-31
    android viewpager radiogroup
  • RadioGroup如何在Android中使用
    本篇文章给大家分享的是有关RadioGroup如何在Android中使用,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。具体如下:activity_main.xml<xml...
    99+
    2023-05-30
    android radiogroup
  • Android项目中如何使用adapter对数据进行处理
    本篇文章给大家分享的是有关Android项目中如何使用adapter对数据进行处理,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。具体如下:package com.cvte.ap...
    99+
    2023-05-31
    android adapter roi
  • 在Java项目中如何对进制进行转换
    在Java项目中如何对进制进行转换?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。十进制转成十六进制: Integer.toHexString(int i) 十进...
    99+
    2023-05-31
    java ava 目中
  • 使用Maven如何对项目进行管理
    使用Maven如何对项目进行管理?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。使用 Maven 管理项目时,三层的开发时分模块开发的,parent-dao-se...
    99+
    2023-05-31
    maven mave
  • 如何在Java项目中使用Maven进行打包?
    Maven是一个流行的Java构建工具,它可以帮助我们自动管理项目依赖、构建、测试和部署。在本文中,我们将介绍如何使用Maven构建Java项目并打包成可执行的jar文件。 步骤1:安装Maven 在开始之前,需要先安装Maven。你可以...
    99+
    2023-09-13
    日志 数据类型 打包
  • GridView如何在Android项目中使用
    这期内容当中小编将会给大家带来有关GridView如何在Android项目中使用 ,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。定义各种layout 和对应的item <&#63;...
    99+
    2023-05-31
    android gridview idv
  • log4j如何在Android项目中使用
    log4j如何在Android项目中使用?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。 Android 使用log4j前言: 如果要直接在a...
    99+
    2023-05-31
    android log4j roi
  • Intent如何在Android 项目中使用
    今天就跟大家聊聊有关Intent如何在Android 项目中使用,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。一 Android系统用于Activity的标准Intent1 根据联系...
    99+
    2023-05-31
    android intent
  • IntentService如何在Android项目中使用
    IntentService如何在Android项目中使用 ?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。Android IntentService详解一、Int...
    99+
    2023-05-31
    android intentservice roi
  • EditText如何在Android项目中使用
    EditText如何在Android项目中使用?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。1.获取光标选中的文字EditText view = (EditTe...
    99+
    2023-05-31
    android edittext roi
  • AutoCompleteTextView如何在Android项目中使用
    这期内容当中小编将会给大家带来有关AutoCompleteTextView如何在Android项目中使用,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。自动编辑文本框(AutoCompleteTextVie...
    99+
    2023-05-31
    android roi autocompletetextview
  • 如何在Android项目中使用ImageView
    这期内容当中小编将会给大家带来有关如何在Android项目中使用ImageView,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。首先创建一个叫MatrixImageView的类去继承ImageView,然...
    99+
    2023-05-31
    android age imageview
  • 如何在python3项目中对IP地址进行判断
    本篇文章给大家分享的是有关如何在python3项目中对IP地址进行判断,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。python是什么意思Python是一种跨平台的、具有解释性...
    99+
    2023-06-06
  • 在java项目中如何对csv数据进行分割
    在java项目中如何对csv数据进行分割?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。java 分割csv数据的实例详解实际需要解析的csv中很多都是从excel中转过来的,数...
    99+
    2023-05-31
    java ava csv
  • 如何在kotlin+java项目中使用maven进行打包
    这期内容当中小编将会给大家带来有关如何在kotlin+java项目中使用maven进行打包,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。Java的特点有哪些Java的特点有哪些1.Java语言作为静态面向...
    99+
    2023-06-06
  • 如何在ASP项目中使用Git Bash进行重定向?
    在ASP项目中使用Git Bash进行重定向可能是一个常见的需求。Git Bash是一个在Windows上运行的终端模拟器,可以让你在Windows环境下使用Linux命令。在ASP项目中使用Git Bash进行重定向可以方便地将输出重定向...
    99+
    2023-07-26
    git bash 重定向
  • 如何在 ASP 项目中使用 Git 进行代码管理?
    随着软件开发的不断发展和进步,代码管理变得越来越重要。而Git作为一个流行的代码版本控制工具,受到了越来越多开发者的青睐。本文将介绍如何在ASP项目中使用Git进行代码管理。 一、Git的基本概念 1.1 Git的工作原理 Git的工作原...
    99+
    2023-11-01
    关键字 git 大数据
  • 如何在Java项目中利用post请求对Json进行封装
    如何在Java项目中利用post请求对Json进行封装?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。直接上代码String longUrl = ...
    99+
    2023-05-31
    json java post
  • 如何在java项目中利用IO流对数组进行排序
    这篇文章主要为大家详细介绍了如何在java项目中利用IO流对数组进行排序,文中示例代码介绍的非常详细,具有一定的参考价值,发现的小伙伴们可以参考一下:排序思路(1)从字符输入流中读取文本,缓冲各个字符,从而实现字符、数组和行的高效读取(2)...
    99+
    2023-06-06
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作