首页 > 解决方案 > 如何在不使用片段的情况下使用 Activity 制作 TabLayout?有可能吗?如果可能的话,我怎么能做到这一点?

问题描述

我是初学者,我为登录和注册 UI 制作了这个布局,但问题是我面临太多问题,所以我决定删除这两个片段并替换为活动。唯一的问题是如何用活动制作这个TabLayout

登录片段

注册片段

我不想要我自己可以制作的布局,但是如何使登录和注册活动从左到右和从右到左滑动?可能吗?我通过使用一个活动来做到这一点,并将其放入两个这样的片段中

注册片段

package com.example.wave;

import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

import androidx.fragment.app.Fragment;



public class SignupFragment extends Fragment {

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

        View view = inflater.inflate(R.layout.fragment_signup, container, false);

        return view;
    }
}

登录片段

package com.example.wave;

import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.TextView;

import androidx.fragment.app.Fragment;

import com.google.android.material.textfield.TextInputLayout;

public class LoginFragment extends Fragment {

    TextInputLayout mobile, password;
    Button login;
    TextView forget;
    float v = 0;

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

        View view = inflater.inflate(R.layout.fragment_login, container, false);

        mobile = view.findViewById(R.id.mobile);
        password = view.findViewById(R.id.pass);
        login = view.findViewById(R.id.login);
        forget = view.findViewById(R.id.forgetpass);

//        This is for translation X axis
        mobile.setTranslationX(800);
        password.setTranslationX(800);
        forget.setTranslationX(800);
        login.setTranslationX(800);

//        This is for alpha animation
        mobile.setAlpha(v);
        password.setAlpha(v);
        forget.setAlpha(v);
        login.setAlpha(v);

//        This is for animation delay
        mobile.animate().translationX(0).alpha(1).setDuration(800).setStartDelay(300).start();
        password.animate().translationX(0).alpha(1).setDuration(800).setStartDelay(500).start();
        forget.animate().translationX(0).alpha(1).setDuration(800).setStartDelay(500).start();
        login.animate().translationX(0).alpha(1).setDuration(800).setStartDelay(700).start();

        return view;
    }
}

我附加两个片段的AuthenticationActivity

package com.example.wave;

import android.os.Bundle;

import androidx.appcompat.app.AppCompatActivity;
import androidx.fragment.app.FragmentManager;
import androidx.viewpager2.widget.ViewPager2;

import com.google.android.material.tabs.TabLayout;

public class AuthenticationActivity extends AppCompatActivity {

    TabLayout tabLayout;
    ViewPager2 pager2;
    ViewPagerAdapter adapter;

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

        tabLayout = findViewById(R.id.tabLayout);
        pager2 = findViewById(R.id.viewPager2);


        FragmentManager fm = getSupportFragmentManager();
        adapter = new ViewPagerAdapter(fm, getLifecycle());
        pager2.setAdapter(adapter);


        tabLayout.addTab(tabLayout.newTab().setText("Log In"));
        tabLayout.addTab(tabLayout.newTab().setText("Sign Up"));

        tabLayout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
            @Override
            public void onTabSelected(TabLayout.Tab tab) {
                pager2.setCurrentItem(tab.getPosition());
            }

            @Override
            public void onTabUnselected(TabLayout.Tab tab) {

            }

            @Override
            public void onTabReselected(TabLayout.Tab tab) {

            }
        });


        pager2.registerOnPageChangeCallback(new ViewPager2.OnPageChangeCallback() {
            @Override
            public void onPageSelected(int position) {
                tabLayout.selectTab(tabLayout.getTabAt(position));
            }
        });

    }

}

ViewPagerAdapter

package com.example.wave;

import androidx.annotation.NonNull;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager;
import androidx.lifecycle.Lifecycle;
import androidx.viewpager2.adapter.FragmentStateAdapter;

import org.jetbrains.annotations.NotNull;

public class ViewPagerAdapter extends FragmentStateAdapter {
    public ViewPagerAdapter(@NonNull @NotNull FragmentManager fragmentManager, @NonNull @NotNull Lifecycle lifecycle) {
        super(fragmentManager, lifecycle);
    }

    @NonNull
    @NotNull
    @Override
    public Fragment createFragment(int position) {
        switch (position)
        {
            case 1:
                return new SignupFragment();

        }

        return new LoginFragment();
    }

    @Override
    public int getItemCount() {
        return 2;
    }
}

标签: javaandroidandroid-layoutandroid-activityandroid-tablayout

解决方案


推荐阅读