Android Studio 使用ViewPager + Fragment实现滑动菜单Tab效果菜鸟版保姆级

使用了最新版的Android Studio 

对了解ViewPager 和Fragment的联合使用非常有帮助,附源码下载:

https://download.csdn.net/download/my147/88613997

可以手动滑动菜单

也可以通过点击头部菜单进行切换

所有文件概览

第一步:打开Android studio新建一个空的项目

按个人喜欢输入项目名称

………………

等待项目初始化完成!

在res/values目录下colors.xml文件中增加一行

<color name="tab_text_color">#9f9d98</color>

如下图:定义一个颜色值(顺便了解一下colors.xml文件的应用)

再在res/values目录下strings.xml文件中增加两行

<string name="tab_labe01">第一个标签</string>
<string name="tab_labe02">第二个标签</string>

如下图:定义两个字符串值(顺便了解一下strings.xml文件的应用)

下面是activity_main.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">
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="40dp"
        android:layout_marginTop="1dp"
        android:background="@android:color/white"
        android:baselineAligned="false"
        android:gravity="center_vertical"
        android:orientation="horizontal"
        android:paddingBottom="5dp"
        android:paddingTop="5dp">
        <!--detail Tab-->
        <TextView
            android:id="@+id/item_detail"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:gravity="center_horizontal|center_vertical"
            android:text="@string/tab_labe01"
            android:textColor="@color/tab_text_color"
            android:textSize="20sp"/>
        <!--category report Tab-->
        <TextView
            android:id="@+id/item_category_report"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:gravity="center_horizontal|center_vertical"
            android:text="@string/tab_labe02"
            android:textColor="@color/tab_text_color"
            android:textSize="20sp"/>
    </LinearLayout>
    <androidx.viewpager.widget.ViewPager
        android:id="@+id/mainViewPager"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"/>
</LinearLayout>

MainActivity.java(主界面java代码)

package com.example.myviewpager;

import androidx.appcompat.app.AppCompatActivity;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentPagerAdapter;
import androidx.viewpager.widget.ViewPager;

import android.graphics.Color;
import android.os.Bundle;
import android.view.View;
import android.widget.TextView;

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


public class MainActivity extends AppCompatActivity implements View.OnClickListener {
    private TextView item_detail, item_category_report;
    private ViewPager viewPagerp;
    private fragment_one fragmentone;
    private fragment_two fragmenttwo;
    private List<Fragment> mfragmentList = new ArrayList<Fragment>();
    private FragmentAdapter mfragmentAdapter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        initViews();

        mfragmentAdapter = new FragmentAdapter(this.getSupportFragmentManager(), mfragmentList);
        viewPagerp.setOffscreenPageLimit(2);//viewpager的缓存为2帧
        viewPagerp.setAdapter(mfragmentAdapter);
        viewPagerp.setCurrentItem(0);//初始设置viewpager选中第一帧
        item_detail.setTextColor(Color.parseColor("#0c40b6"));

        //viewpager的监听事件
        viewPagerp.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {

            @Override
            public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

            }

            @Override
            public void onPageSelected(int position) {
                /*此方法在页面被选中时调用*/
                changeTextColor(position);
            }

            @Override
            public void onPageScrollStateChanged(int state) {
                 /*此方法是在状态改变的时候调用,其中arg0这个参数有三种状态(0,1,2)。
                 arg0==1时默示正在滑动,
                 arg0==2时默示滑动完毕了,
                 arg0==0时默示什么都没做。*/
            }
        });

    }

    /**
     * 初始化布局View
     */


    private void initViews() {
        item_detail = (TextView) findViewById(R.id.item_detail);
        item_category_report = (TextView) findViewById(R.id.item_category_report);

        item_detail.setOnClickListener(this);
        item_category_report.setOnClickListener(this);

        viewPagerp = (ViewPager) findViewById(R.id.mainViewPager);
        fragmentone = new fragment_one();
        fragmenttwo = new fragment_two();
        //给FragmentList添加数据
        mfragmentList.add(fragmentone);
        mfragmentList.add(fragmenttwo);
    }

    /**
     * 点击顶部Text 动态修改ViewPager的内容
     */
    @Override
    public void onClick(View v) {
        int id = v.getId();
        if (id == R.id.item_detail) {
            viewPagerp.setCurrentItem(0, true);
        } else if (id == R.id.item_category_report) {
            viewPagerp.setCurrentItem(1, true);
        }
    }

    public class FragmentAdapter extends FragmentPagerAdapter {

        List<Fragment> fragmentList = new ArrayList<Fragment>();

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


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

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

    }

    /**
     * 由ViewPager的滑动修改头部导航Text的颜色
     * @param position
     */
    private void changeTextColor(int position) {
        if (position == 0) {
            item_detail.setTextColor(Color.parseColor("#0c40b6"));
            item_category_report.setTextColor(Color.parseColor("#9f9d98"));
        } else if (position == 1) {
            item_category_report.setTextColor(Color.parseColor("#0c40b6"));
            item_detail.setTextColor(Color.parseColor("#9f9d98"));
        }
    }
}

接着在res/layout目录下创建两个Fragment类型文件(fragment_one.xml和fragment_two.xml)

步骤如下:(鼠标放在layout目录上点鼠标右键)

输入文件名称:fragment_one后点finish按钮。

系统会自动创建两个文件:fragment_one.xml和fragment_one.java如下图:

修改fragment_one.xml文件如下:

fragment_one.xml文件代码:

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout 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"
    tools:context=".Fragment_one">

    <!-- TODO: Update blank fragment layout -->
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:text="@string/tab_labe01"
        android:textSize="25sp"/>

</FrameLayout>

fragment_one.java文件不用作任何修改!

按照同样的方法再创建两个文件:fragment_two.xml和fragment_two.java如下图:

输入文件名称:fragment_two后点finish按钮。

系统会自动创建两个文件:fragment_two.xml和fragment_two.java如下图:

修改fragment_two.xml文件如下:

fragment_two.xml文件代码:

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout 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"
    tools:context=".Fragment_two">

    <!-- TODO: Update blank fragment layout -->
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:text="@string/tab_labe02"
        android:textSize="25sp"/>

</FrameLayout>

到此所有的工作都完成了,是不是很简单?这是我第一次分享学习体会;请多多关照!

点击右上角的绿色按钮,看看效果吧!

如下图:

  • 12
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Android Studio中的滑动按钮是指Switch控件,它是一种开关控件,可以在打开和关闭之间切换。用户可以通过滑动按钮来改变其状态。在布局文件中,可以使用Switch标签来创建滑动按钮。在代码中,可以使用Switch类来控制滑动按钮的状态和行为。 ### 回答2: Android Studio滑动按钮是一个非常流行的用户界面元素,用于控制应用程序中的设置和功能开关。滑动按钮分为开关按钮和拖动按钮两种。使用滑动按钮可以提供一种更直观、更易于使用和更现代的选择方式,同时还可以增加应用程序的可用性和易用性。 开关按钮可以让用户轻松开启或关闭应用程序的某些设置或功能,例如启用或禁用通知、开启或关闭音频播放、启用或禁用数据同步等。在开关按钮上,用户可以看到当前设置状态(开启或关闭),并可以通过滑动按钮来更改它们。 拖动按钮可以让用户设置某些选项的值,例如音量或亮度等。拖动按钮可以移动到不同的位置来反映不同的值。用户可以向左或向右拖动按钮来更改选项的值。在滑动按钮上,用户可以看到当前选项设置的值,并可以通过滑动按钮来更改它们。 Android Studio提供了一个名为Switch的视图组件,用于创建开关按钮。该组件可以通过XML代码或代码方式创建,并可以设置开启和关闭状态的文本、颜色和图标等属性。 另一方面,Android Studio还提供了SeekBar组件,用于创建拖动按钮。您可以通过XML代码或代码方式创建SeekBar,并设置最小值、最大值、当前值、进度条颜色和拖动按钮的样式等属性。 总的来说,Android Studio滑动按钮非常易于使用和灵活,开发者可以将它们嵌入到各种应用程序中,以提供更人性化的用户体验。 ### 回答3: Android Studio中的滑动按钮(Switch)是一种常见的UI控件,它允许用户通过滑动操作来切换某种状态。滑动按钮看起来像一个小型开关,但是其显示的状态可以是开、关或未确定状态。 使用Android Studio创建一个滑动按钮很简单,只需在XML布局文件中添加以下代码: ``` <Switch android:id="@+id/my_switch" android:layout_width="wrap_content" android:layout_height="wrap_content" /> ``` 这里的ID和布局宽度和高度可以根据实际需要进行修改。 接下来,我们可以在Activity中通过findViewById方法获取到这个滑动按钮,并添加一个OnCheckedChangeListener来监听状态改变事件: ``` Switch mySwitch = (Switch) findViewById(R.id.my_switch); mySwitch.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { // 如果滑动按钮被切换到打开状态 if (isChecked) { // 执行你想要的操作 } else { // 执行另一种操作 } } }); ``` 在onCheckedChanged方法中,我们可以根据isChecked的值来判断滑动按钮的状态,从而执行相应的操作。 另外,我们还可以在XML布局文件中添加一些属性来自定义滑动按钮的外观,例如: - android:focusable="false":滑动按钮不接受焦点,点击事件将被忽略。 - android:textOff="关闭":指定了关闭状态下的文本。 - android:textOn="打开":指定了打开状态下的文本。 - android:thumbTint="#FF0000":指定了滑块的颜色。 - android:trackTint="#00FF00":指定了轨道的颜色。 总之,Android Studio中的滑动按钮是一个非常实用的UI控件,可以帮助我们实现许多功能。您可以在UI设计中灵活运用滑动按钮,为用户提供更好的交互体验。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值