标签: android-tablayout

如何在android中的选项卡布局中设置自定义选项卡

actvity_main.xml

<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <android.support.design.widget.AppBarLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">

            <android.support.design.widget.TabLayout
                android:id="@+id/tabs"
                android:background="#ef9f9f"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                app:tabGravity="fill"
                app:tabMode="fixed" />

        </android.support.design.widget.AppBarLayout>

        <android.support.v4.view.ViewPager
            android:id="@+id/viewpager"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            app:layout_behavior="@string/appbar_scrolling_view_behavior" />

    </android.support.design.widget.CoordinatorLayout>
Run Code Online (Sandbox Code Playgroud)

// 主要活动 :

public class MainActivity extends AppCompatActivity {

    private TabLayout tabLayout;
    public ViewPager viewPager;

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

        viewPager = (ViewPager) findViewById(R.id.viewpager);
        setupViewPager(viewPager);

        tabLayout = (TabLayout) findViewById(R.id.tabs);
        tabLayout.setupWithViewPager(viewPager);

        View headerView = ((LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE))
                .inflate(R.layout.custom_tab, null, false);

        final LinearLayout linearLayoutOne = (LinearLayout) headerView.findViewById(R.id.ll);
        final LinearLayout linearLayout2 = (LinearLayout) headerView.findViewById(R.id.ll2);
        final …
Run Code Online (Sandbox Code Playgroud)

android android-layout android-tablayout

1
推荐指数
1
解决办法
2万
查看次数

如何让图标位于选项卡布局中文本的左侧?

我试图弄清楚如何让图标不在文本顶部而是在文本侧面,但我不确定如何具体使用我的代码来做到这一点。我对 Android Studio 还很陌生,所以我将不胜感激任何帮助。

XML代码

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:orientation="vertical"
    android:layout_height="match_parent"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    tools:context=".MyCabinet">

    <android.support.v7.widget.Toolbar
        android:id="@+id/toolbarMyCabinet"
        android:layout_height="wrap_content"
        android:layout_width="match_parent"
        android:background="@color/colorPrimary">

        <TextView
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:text="@string/teacher_files_title"
            android:gravity = "center"
            android:id="@+id/toolbar_title"
            app:fontFamily="@font/capriola"
            android:textSize="20sp"
            />

    </android.support.v7.widget.Toolbar>

    <android.support.design.widget.TabLayout
        android:id="@+id/tabLayout"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        app:tabMode="fixed"
        app:tabGravity="fill"
        app:tabIndicatorColor="@color/colorAccent"
        app:elevation="4dp">
    </android.support.design.widget.TabLayout>

    <android.support.v4.view.ViewPager
        android:layout_width="match_parent"
        android:id="@+id/viewPagerMyCabinet"
        android:layout_height="match_parent">

    </android.support.v4.view.ViewPager>

</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

活动代码

private TabLayout tabLayout;
private ViewPager viewPager;
private ViewPagerAdapter adapter;


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

    tabLayout = (TabLayout) findViewById(R.id.tabLayout);
    viewPager = (ViewPager) findViewById(R.id.viewPagerMyCabinet);
    adapter = new ViewPagerAdapter(getSupportFragmentManager());

    //add fragment …
Run Code Online (Sandbox Code Playgroud)

android android-tablayout

1
推荐指数
1
解决办法
2102
查看次数

Android TabLayout 标题本地化不起作用

我有带有 ViewPager 的 TabLayout 并且我只有两个选项卡:

  • 桌子

  • 地图

我在应用程序中支持多种语言,例如:

  • 英语,

  • 德语

  • 塞尔维亚

因此,我使用塞尔维亚语作为默认语言,因为大多数用户都是说塞尔维亚语的人,但是如果我更改为其他语言,除了表格和地图选项卡之外,所有内容都已正确本地化,因为它们总是使用塞尔维亚语。

可能是什么问题?

English:
    <string name="tab_map">MAP</string>
    <string name="username">Username</string>

German:
    <string name="tab_table">TABELLE</string>
    <string name="tab_map">MAPA</string>

Serbian:
    <string name="tab_table">TABELA</string>
    <string name="tab_map">MAPA</string>
Run Code Online (Sandbox Code Playgroud)

这是 TabLayout 的适配器:

public class MainViewPagerAdapter extends FragmentStatePagerAdapter {

private Context context;
private LiveFragment liveFragment;
private MapFragment mapFragment;

public MainViewPagerAdapter(FragmentManager fm, Context context, LiveFragment liveFragment, MapFragment mapFragment) {
    super(fm);
    this.context = context;
    this.liveFragment = liveFragment;
    this.mapFragment = mapFragment;
}

@Override
public Fragment getItem(int position) {
    switch (position){
        case 0: return liveFragment;
        case …
Run Code Online (Sandbox Code Playgroud)

android android-tablayout

1
推荐指数
1
解决办法
458
查看次数

返回视图时 FragmentManager 已经在执行事务

我有一个视图,它有一个 tablayout 激活 viewpager,在查看页面时它工作正常,但是如果我单击该视图上的一个项目然后返回到过去的屏幕,我会得到:

Java.Lang.IllegalStateException:FragmentManager 已经在执行事务

public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
    CurrentActivity = Activity;

    var view = inflater.Inflate(Resource.Layout.fragment_directory, null);

    _tabLayout = view.FindViewById<TabLayout>(Resource.Id.directory_tabs);
    _viewPager = view.FindViewById<ViewPager>(Resource.Id.directory_pager);

    SetTabLayout();
    SetViewPager();

    return view;
}

private void SetTabLayout()
{
    var userTab = _tabLayout.NewTab();
    userTab.SetText("Users");

    var orgUnitsTab = _tabLayout.NewTab();
    orgUnitsTab.SetText("Organizations");

    _tabLayout.AddTab(userTab);
    _tabLayout.AddTab(orgUnitsTab);
    _tabLayout.TabGravity = TabLayout.GravityFill;
}

private void SetViewPager()
{
    var pagerAdapter = new DirectoryPagerAdapter(FragmentManager, _tabLayout.TabCount);

    _viewPager.Adapter = pagerAdapter;
    _viewPager.AddOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(_tabLayout));
}
Run Code Online (Sandbox Code Playgroud)

不确定它是否有所作为,但是当我离开这个视图时,我从一个片段变成了一个活动。

xamarin.android android-viewpager android-tablayout

1
推荐指数
1
解决办法
5813
查看次数

android:textAllCaps=“false”不适用于 com.google.android.material.tabs.TabLayout

我在 com.google.android.material.tabs.TabItem 中设置了 android:textAllCaps="false" ,认为它仅显示全部大写的选项卡标题。

如何删除所有大写字母?

<com.google.android.material.tabs.TabLayout
    android:id="@+id/tabs"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" >

    <com.google.android.material.tabs.TabItem
        android:id="@+id/TabWeekly"
        android:layout_width="100dp"
        android:layout_height="wrap_content"
        android:text="@string/Weekly"
        android:textAllCaps="false"
        android:theme="@style/CustomTextAppearanceTab" />

    <com.google.android.material.tabs.TabItem
        android:id="@+id/TabMonthly"
        android:layout_width="100dp"
        android:layout_height="wrap_content"
        android:text="@string/Monthly"
        android:textAllCaps="false"
        android:theme="@style/CustomTextAppearanceTab" />

</com.google.android.material.tabs.TabLayout>
Run Code Online (Sandbox Code Playgroud)

即使我已经为它设定了风格

<style name="CustomTextAppearanceTab" parent="TextAppearance.Design.Tab">
       <item name="textAllCaps">false</item>
       <item name="android:textAllCaps">false</item>
</style>
Run Code Online (Sandbox Code Playgroud)

但它不起作用

xml android material-design android-tablayout

1
推荐指数
1
解决办法
2797
查看次数

每次重新选择选项卡时,viewpager tablayout中的片段都会保持不变

我有三个选项卡,当用户转到第三个选项卡然后返回第一个选项卡时 - 第一个选项卡中的内容不会重置,表单会不断重新加载.

这是我的代码:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.scorespagemain);
    viewPager = (ViewPager) findViewById(R.id.viewPager);
    CAdapter cAdapter = new Adapter(getSupportFragmentManager(), ScoresPageMain.this);
    viewPager.setAdapter(cAdapter);
    tabLayout = (TabLayout) findViewById(R.id.tabsstuff);
    tabLayout.setupWithViewPager(viewPager);
    tabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
        @Override
        public void onTabSelected(TabLayout.Tab tab) {
            viewPager.setCurrentItem(tab.getPosition());
        }

        @Override
        public void onTabUnselected(TabLayout.Tab tab) {
            viewPager.setCurrentItem(tab.getPosition());
        }

        @Override
        public void onTabReselected(TabLayout.Tab tab) {
            viewPager.setCurrentItem(tab.getPosition());
        }
    });
}
Run Code Online (Sandbox Code Playgroud)

}

CAdapter 类:

public class CAdapter extends FragmentPagerAdapter{
    String names[] = new String[] {"Top Teams", "Top Scores", "Top Players"};
    Context context;

    public CAdapter(FragmentManager …
Run Code Online (Sandbox Code Playgroud)

android android-fragments android-viewpager android-tablayout

0
推荐指数
1
解决办法
634
查看次数

标签文本随viewpager消失

一个非常简单的例子.我想大多数人都是以这种方式实现一个标签.但标签文本只是缺失.

设计支持lib的版本是最新的24.2.0.

这是我的布局代码:

<android.support.design.widget.TabLayout
    android:id="@+id/tabs"
    app:tabTextColor="@android:color/darker_gray"
    app:tabSelectedTextColor="@android:color/white"
    android:background="@color/colorPrimary"
    android:minHeight="?attr/actionBarSize"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

    <android.support.design.widget.TabItem
        android:text="@string/tab_domain"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

    <android.support.design.widget.TabItem
        android:text="@string/tab_upload"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

    <android.support.design.widget.TabItem
        android:text="@string/tab_download"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

</android.support.design.widget.TabLayout>

<android.support.v4.view.ViewPager
    android:id="@+id/pager"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />
Run Code Online (Sandbox Code Playgroud)

我正在使用ButterKnife 8.2.1来绑定视图对象.这是我在onCreate()中的活动代码:

    final DiagnosePagerAdapter adapter = new DiagnosePagerAdapter(getSupportFragmentManager(),
            tabs.getTabCount());
    tabs.setupWithViewPager(pager);
    pager.setAdapter(adapter);
    pager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tabs));
Run Code Online (Sandbox Code Playgroud)

这是我的适配器:

    class DiagnosePagerAdapter extends FragmentStatePagerAdapter {
    int mNumOfTabs;
    List<Fragment> fragments = new ArrayList<>();

    public DiagnosePagerAdapter(FragmentManager fm, int numberOfTabs) {
        super(fm);
        this.mNumOfTabs = numberOfTabs;
        fragments.add(new DomainFragment());
        fragments.add(new UploadFragment());
        fragments.add(new DownloadFragment());
    }

    @Override
    public Fragment getItem(int position) …
Run Code Online (Sandbox Code Playgroud)

android android-viewpager android-tablayout

0
推荐指数
1
解决办法
2275
查看次数

无法在Tablayout中显示图标

我试图在我的选项卡中显示图标,我正在使用tablayout和viewpager,但是当我调用tablayout.setupWithViewPager(viewpager)时,我的图标正在消失Min sdk is 16 Target is 24 Support library 24.2.1

这就是我设置标签的方式: -

    private void setUpTabs(){
       tabs.setupWithViewPager(viewpager);

        TabLayout.Tab discoverTab = tabs.newTab();
        TabLayout.Tab placesTab = tabs.newTab();
        TabLayout.Tab rewardTab = tabs.newTab();

        Drawable discover = ContextCompat.getDrawable(this, R.drawable.discover);
        discover.setAlpha(255);
        discover.setColorFilter(Color.WHITE, PorterDuff.Mode.SRC_ATOP);
        Drawable places = ContextCompat.getDrawable(this, R.drawable.places);
        places.setAlpha(55);
        places.setColorFilter(Color.WHITE, PorterDuff.Mode.SRC_ATOP);
        Drawable rewards = ContextCompat.getDrawable(this, R.drawable.rewards);
        rewards.setAlpha(55);
        rewards.setColorFilter(Color.WHITE, PorterDuff.Mode.SRC_ATOP);

        discoverTab.setIcon(discover);
        placesTab.setIcon(places);
        rewardTab.setIcon(rewards);

        tabs.addTab(discoverTab,0);
        tabs.addTab(placesTab,1);
        tabs.addTab(rewardTab,2); 
    }
Run Code Online (Sandbox Code Playgroud)

ViewPager: -

   private void setUpViewPager(){
        ViewPagerAdapter adapter = new ViewPagerAdapter(getSupportFragmentManager());
        adapter.addFrag(DiscoverFragment.getFragment(null),"Discover");
        adapter.addFrag(PlacesFragment.getFragment(null),"Places");
        adapter.addFrag(RewardsFragment.getFragment(null),"Rewards");
        viewpager.setAdapter(adapter);
    }
Run Code Online (Sandbox Code Playgroud)

ViewPagerAdapter: -

public class ViewPagerAdapter extends …
Run Code Online (Sandbox Code Playgroud)

android android-layout android-viewpager material-design android-tablayout

0
推荐指数
1
解决办法
1259
查看次数

当父片段替换其他片段时,内容不会在选项卡布局片段中加载

我有一个MainActivIty,它支持两个片段,即Home和Profile。Home具有一个TabLayout,而TabLayout依次具有趋势,关注和附近三个片段。因此,问题在于,首次加载Home时,它会显示Tab片段的内容,并且Tab布局的滑块会正确移动,但是当我进行剖析然后回到home时,则不会加载Tab布局的片段,而从左向右滑动不能平稳移动这里是代码

public class MainActivity extends AppCompatActivity {

 ImageButton home_btn,myProfile_btn;
FragmentManager fragmentManager;
FragmentTransaction fragmentTransaction;
TextView txt_action_bar;
Home home;
ProfileFragment profile;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    home_btn=(ImageButton)findViewById(R.id.home_btn) ;
    discover_btn=(ImageButton)findViewById(R.id.discover_btn) ;
    myProfile_btn=(ImageButton)findViewById(R.id.profile_btn) ;
    notification_btn=(ImageButton)findViewById(R.id.notification_btn) ;
    plus_btn=(ImageButton)findViewById(R.id.btn_plus) ;

    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
     txt_action_bar = (TextView)findViewById(R.id.toolbar_title);
    displayMetrics = getResources().getDisplayMetrics();
    Typeface custom_font = Typeface.createFromAsset(getAssets(),"fonts/NoteworthyLight.ttf");
    txt_action_bar.setTypeface(custom_font);


    setSupportActionBar(toolbar);
     fragmentManager = getSupportFragmentManager();
    fragmentTransaction = fragmentManager.beginTransaction();
     home = new Home();
     profile = new ProfileFragment();
    fragmentTransaction.add(R.id.main_fragment_container,home,"home");
    fragmentTransaction.commit();


}

public void onClickHome(View view)
{


    fragmentManager = getSupportFragmentManager();
    fragmentTransaction …
Run Code Online (Sandbox Code Playgroud)

android fragment fragmentpageradapter android-tablayout

0
推荐指数
1
解决办法
1268
查看次数

如何在Android上的TabLayout中为选择选项卡设置填充

在我的申请中我应该TabLayoutViewPager.
我想选择的项目设置为填充时tabIndicatorColortabLayout.

默认显示我这样的图像:
图片1

不是我想要的当选项目,请给我这样的:
在此输入图像描述

我想设置填充tabIndicatorColor.

我的TabLayout XML代码:

<android.support.design.widget.TabLayout
    android:id="@+id/serialDetail_tabLayout"
    android:layout_width="match_parent"
    android:layout_height="@dimen/size50"
    android:layout_gravity="bottom"
    android:background="@color/colorPrimary"
    app:tabIndicatorColor="@color/colorAccent"
    app:tabSelectedTextColor="@color/colorAccent"
    app:tabTextAppearance="@style/allCapsTabLayout"
    app:tabTextColor="@color/white" />
Run Code Online (Sandbox Code Playgroud)

我怎么能这样?请帮我.谢谢所有<3

android android-viewpager android-tablayout

0
推荐指数
1
解决办法
738
查看次数