android顶部导航高度,Android特效——————底部/顶部导航条(Fragment+ViewPaper+XTabLayout)...

初次使用xtablayout和viewpaper2.所以就弄了最基础的导航条

一、效果

4149083bdca510ffc7359b994100a5e0.gif

二、代码

配置环境【在bulid.gradle中添加以下代码】

implementation ‘androidx.viewpager2:viewpager2:1.0.0-alpha02‘implementation‘com.androidkun:XTabLayout:1.1.4‘

按钮点击切换图片【几个点击按钮图片,几个这样的布局】

主页布局代码

android:id="@+id/pagers"android:layout_width="match_parent"android:layout_height="0dp"android:layout_weight="1"android:orientation="horizontal"/>

android:id="@+id/tab"android:layout_width="match_parent"android:layout_height="100dp"app:xTabMode="fixed"app:xTabTextSize="15sp"app:xTabTextColor="@color/colorThemeText"app:xTabSelectedTextColor="@color/colorTheme"app:xTabSelectedTextSize="20sp" />

xtablyout属性说明:

字体

xTabTextSize:默认按钮字体大小【未点击时】

xTabTextColor:默认字体颜色【未点击时】

xTabSelectedTextColor:选中时字体的大小

xTabSelectedTextSize:选中时的字体颜色

xTabTextSelectedBold="true":设置选中Tab的文本是否粗体显示app:xTabTextBold="true":设置未选中Tab的文本是否粗体显示

指示器设置xTabDisplayNum:设置屏幕内显示Tab个数xTabDividerWidthWidthText="true":设置指示器长度随文本改变xTabMode:设置按钮是否可以滑动【注意是按钮,不是页面】

背景色xTabBackgroundColor:默认按钮背景色xTabSelectedBackgroundColor:选中按钮背景色

分割线xTabDividerWidth:宽度xTabDividerHeight:高度xTabDividerColor:颜色xTabDividerGravity:是否居中

Fragement【都是这样,这里就显示一个】

android:orientation="vertical" android:layout_width="match_parent"

android:layout_height="match_parent">

android:text="第一页"

android:layout_width="match_parent"

android:layout_height="match_parent"/>

主页Java代码

package com.example.mslinbill.main;

import androidx.annotation.NonNull;

import androidx.appcompat.app.AppCompatActivity;

import androidx.fragment.app.Fragment;

import androidx.viewpager2.adapter.FragmentStateAdapter;

import androidx.viewpager2.widget.ViewPager2;

import android.os.Bundle;

import android.widget.Toast;

import com.androidkun.xtablayout.XTabLayout;

import com.example.mslinbill.R;

import com.example.mslinbill.fragment.SubPage_BookKeeping_Fragment;

import com.example.mslinbill.fragment.SubPage_Wages_Fragment;

import java.util.ArrayList;

import java.util.List;

public class MainActivity extends AppCompatActivity {

//XTabLayout

XTabLayout tab;

ViewPager2 pagers;

List list = new ArrayList<>();

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

/**

* XTabLayout的操作

*/

//1.找到XTablayout

tab = findViewById(R.id.tab);

pagers =findViewById(R.id.pagers);

//2.动态添加内容,后面的图片,根据前面的图片选中设置

tab.addTab(tab.newTab().setText("第一页").setIcon(R.drawable.tab_bookkeep));

tab.addTab(tab.newTab().setText("第二页").setIcon(R.drawable.tab_wages));

//3.设置切换效果

tab.setOnTabSelectedListener(new XTabLayout.OnTabSelectedListener() {

//当前选中的Tab

@Override

public void onTabSelected(XTabLayout.Tab tab) {

//获取当前导航卡的位置及文本

int position = tab.getPosition();

pagers.setCurrentItem(position);

//提示词

Toast.makeText(MainActivity.this,position+"---"+tab.getText().toString(), Toast.LENGTH_SHORT).show();

}

//Tab没被选中的方法

@Override

public void onTabUnselected(XTabLayout.Tab tab) {

}

//Tab被重新选中的方法

@Override

public void onTabReselected(XTabLayout.Tab tab) {

}

});

//添加Fragement

addFragement();

pagers.setAdapter(new FragmentStateAdapter(getSupportFragmentManager()) {

@NonNull

@Override

public Fragment getItem(int position) {

return list.get(position);

}

//设置长度

@Override

public int getItemCount() {

return list.size();

}

});

//禁止滑动

// pagers.setUserInputEnabled(false);

/**

* 官方说法:添加回调

* 自我理解:连动按钮和页面

*/

pagers.registerOnPageChangeCallback(new ViewPager2.OnPageChangeCallback() {

@Override

public void onPageSelected(int position) {

super.onPageSelected(position);

//设置指定位置上的导航块被选中

tab.getTabAt(position).select();

}

});

}

//添加Fragement

private void addFragement(){

//添加Fragment

list.add(new Fragment1());

list.add(new Fragment2());

}

}

Fragement代码

public class Fragment1 extends Fragment {

@Nullable

@Override

public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {

return inflater.inflate(R.layout.subpapge1 container, false);

}

}

原文:https://www.cnblogs.com/hahayixiao/p/13725960.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值