gpt4 book ai didi

android - fragment 上带有 ViewPager 的 TabLayout - Lollipop 设备

转载 作者:太空宇宙 更新时间:2023-11-03 13:51:41 25 4
gpt4 key购买 nike

我正在开发一个应用程序,在我的 MainActivity 中,我使用抽屉导航来切换框架布局上的 fragment 。

其中一个 fragment 是“帮助” fragment ,我在其中使用 Tab 布局和 viewpager 在三个页面之间滑动,“关于我们”、“帮助”和“联系我们”

在以下 Lollipop 设备上一切正常。操作栏似乎坚持选项卡布局(使用工具栏作为操作栏)。

但在 Lollipop 设备上,它显示为操作栏和标签布局是分开的。

我怎样才能在 Lollipop 设备上也达到同样的效果?

主要 Activity :

public class MainActivity extends AppCompatActivity implements NavigationView.OnNavigationItemSelectedListener {

NavigationView navigationView;
ActionBarDrawerToggle toggle;
DrawerLayout drawer;
FragmentManager fm = getSupportFragmentManager();

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
getSupportActionBar().setTitle("Title");

drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
toggle = new ActionBarDrawerToggle(
this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
drawer.setDrawerListener(toggle);
toggle.syncState();

navigationView = (NavigationView) findViewById(R.id.nav_view);
navigationView.setNavigationItemSelectedListener(this);
}

@Override
public boolean onNavigationItemSelected(MenuItem item) {
int id = item.getItemId();
if (id == R.id.nav_help) {
getSupportActionBar().setTitle("Help");
fm.beginTransaction().replace(R.id.l_frame_layout, new Help(),"help").commit();
}
DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
drawer.closeDrawer(GravityCompat.START);
return true;}

帮助.java

public class Help extends Fragment {
ViewPager pager;

@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.layout_help, container, false);
return(rootView);
}

@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);

final TabLayout tabLayout = (TabLayout)getActivity(). findViewById(R.id.tllayout_helpTABLAYOUTtl);
tabLayout.addTab(tabLayout.newTab().setText("ABOUT"));
tabLayout.addTab(tabLayout.newTab().setText("HELP"));
tabLayout.addTab(tabLayout.newTab().setText("CONTACT"));

tabLayout.setTabGravity(TabLayout.GRAVITY_FILL);
actionBar = getActivity().getActionBar();

pager = (ViewPager)getActivity().findViewById(R.id.vplayout_helpVIEVPAGERvp);
pager.setAdapter(new MyPagerAdapter(getFragmentManager()));

tabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
@Override
public void onTabSelected(TabLayout.Tab tab) {
pager.setCurrentItem(tab.getPosition());
}
@Override
public void onTabUnselected(TabLayout.Tab tab) {

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

}
});

pager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

}
@Override
public void onPageSelected(int position) {


}
@Override
public void onPageScrollStateChanged(int state) {

}
});
}

class MyPagerAdapter extends FragmentStatePagerAdapter {
public MyPagerAdapter(FragmentManager fm) {
super(fm);
}

@Override
public Fragment getItem(int pos) {
switch(pos) {

case 0: AboutUs tab1 = new AboutUs();
return tab1;

case 1: HelpRecharge tab2 = new HelpRecharge();
return tab2;

case 2: ContactUs tab3 = new ContactUs();
return tab3;

default: return null;
}
}

@Override
public int getCount() {
return 3;
}
}}

enter image description here

最佳答案

似乎您在样式 xml 中为操作栏设置了高度。

对于Android 5.0+,如果你想设置你的actionbar样式如下:

<item name="android:elevation">0dp</item>

和支持库兼容性使用:

<item name="elevation">0dp</item>

AppCompat 浅色主题的样式示例:

<style name="Theme.MyApp.ActionBar" parent="style/Widget.AppCompat.Light.ActionBar.Solid.Inverse">
<!-- remove shadow below action bar -->
<!-- <item name="android:elevation">0dp</item> -->
<!-- Support library compatibility -->
<item name="elevation">0dp</item>
</style>

然后将此自定义 ActionBar 样式应用于您的应用主题:

<style name="Theme.MyApp" parent="Theme.AppCompat.Light">
<item name="actionBarStyle">@style/Theme.MyApp.ActionBar</item>
</style>

对于 5.0 之前的 Android,也将其添加到您的应用主题中:

<!-- Remove shadow below action bar Android < 5.0 -->
<item name="android:windowContentOverlay">@null</item>

关于android - fragment 上带有 ViewPager 的 TabLayout - Lollipop 设备,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34372751/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com