我创建了一个带标签布局的注册表单,其中包含三个标签(三个片段)。点击“下一步”后,我已成功导航到下一个片段。在我之前的片段中。但是我的问题是我无法突出显示当前的标签,当我点击“下一步”时,该标签应突出显示(就像它被选中一样)。在我之前的片段中。
以下是我的第一个片段(帐户信息):
@Override
public void onClick(View v) {
emailid = email.getText().toString();
if (!isValidEmail(emailid)) {
email.setError("Invalid Email");
}
pass = password.getText().toString();
if (!isValidPassword(pass)) {
password.setError("Password cannot be empty");
}
confirmPass = confirmPassword.getText().toString();
if (!isValidPassword(confirmPass)) {
confirmPassword.setError("Password cannot be empty");
}
我使用下面的代码导航到下一个片段,有人可以建议如何在导航到下一个标签(片段)之后突出显示标题吗?
if (isValidEmail(emailid) && isValidPassword(pass)) {
viewPager = (ViewPager) getActivity().findViewById(R.id.pager);
viewPager.setCurrentItem(1);
}
}
下面是我的活动代码,如何在标签上禁用触摸或点击事件?
tabLayout = (TabLayout) findViewById(R.id.tabLayout);
tabLayout.addTab(tabLayout.newTab().setText("Account Info"));
tabLayout.addTab(tabLayout.newTab().setText("Personal Info"));
tabLayout.addTab(tabLayout.newTab().setText("Confirmation"));
tabLayout.setTabGravity(TabLayout.GRAVITY_FILL);
viewPager = (ViewPager) findViewById(R.id.pager);
viewPagerAdapter = new ViewPagerAdapter(getSupportFragmentManager());
viewPager.setAdapter(viewPagerAdapter);
viewPager.setOnTouchListener(new View.OnTouchListener(){
@Override
public boolean onTouch(View v, MotionEvent event)
{
return true;
}
});
viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
// This method will be invoked when a new page becomes selected.
@Override
public void onPageSelected(int position) {
Toast.makeText(SignupActivity.this, "Selected page position: " + position, Toast.LENGTH_SHORT).show();
tabLayout.tabP(true);
}
@Override
public void onPageScrollStateChanged(int state) {
}
});
答案 0 :(得分:1)
对于这种方法,您必须实现此方法
viewPager.addOnPageChangeListener
并且在onPageSelected
方法中,您必须根据条件重新编写选项卡名称
你可以实现像这样的方法
private void initTabsName() {
for (int i = 0; i < tabLayout.getTabCount(); i++) {
TabLayout.Tab tab = tabLayout.getTabAt(i);
RelativeLayout relativeLayout = (RelativeLayout) LayoutInflater.from(this).inflate(R.layout.subcat_custom_tab, tabLayout, false);
// do something to make tab selected using if else statements
/* // for example
if (i == 0) {
}
*/
tab.setCustomView(relativeLayout);
}
}
答案 1 :(得分:0)
添加以下代码解决了我的问题:
if (isValidEmail(emailid) && isValidPassword(pass)) {
viewPager = (ViewPager) getActivity().findViewById(R.id.pager);
viewPager.setCurrentItem(1);
tabLayout = (TabLayout) getActivity().findViewById(R.id.tabLayout);
tabLayout.getTabAt(1).select();
}
如果条件为真,我已启动tabLayout
并调用方法getTabAt()
,该方法负责突出显示选项卡布局中的选项卡。我在getTabAt(1)
中确切地指定了标签位置“1”(不是0,因为0仍然是第一个标签),我需要在成功条件下突出显示。