【问题标题】:Titles in tablayout aren't visibletablayout 中的标题不可见
【发布时间】:2016-05-16 07:50:29
【问题描述】:

使用TabLayout 问题是标题不可见,我在适配器中覆盖了getPageTitle,我还返回了一个字符串,该字符串将是标题,但该字符串不显示。我已经调试了我从服务器获取标题的应用程序。

是的,我关注了this,但它也没有用。

这里是相关的java代码和xml文件。

 private void loadCategories() {
        StringRequest request = new StringRequest(Constants.URL_GET_CATEGORIES, new Response.Listener<String>() {
            @Override
            public void onResponse(String response) {
                categoriesDTO = Constants.gson.fromJson(response,CategoriesDTO.class);
                ViewPagerAdapter adapter = new ViewPagerAdapter(getSupportFragmentManager());
                viewPager.setAdapter(adapter);
                setTabLayout();
            }
        }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {

            }
        });

        ApplicationController.getmInstance().addToRequestQueue(request);
    }



    private void setTabLayout(){
        tabLayout.setupWithViewPager(viewPager);
    }

viewpager 的适配器。

private class ViewPagerAdapter extends FragmentStatePagerAdapter{

    public ViewPagerAdapter(FragmentManager fm) {
        super(fm);
    }

    @Override
    public Fragment getItem(int position) {
        return new ContentFragment();
    }

    @Override
    public int getCount() {
        return categoriesDTO.getCategories().size();
    }

    @Override
    public CharSequence getPageTitle(int position) {
        String title =categoriesDTO.getCategories().get(position).getTitle();
        return title;
    }
}

这是xml。

<?xml version="1.0" encoding="utf-8"?>

<android.support.design.widget.CoordinatorLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent">


    <android.support.design.widget.AppBarLayout
        android:id="@+id/app_bar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

        <include
            android:id="@+id/toolbar"
            layout="@layout/toolbar"
            app:layout_scrollFlags="scroll|enterAlways"
            app:popupTheme="@style/ThemeOverlay.AppCompat.Light" />

        <android.support.design.widget.TabLayout
            android:id="@+id/tab"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            app:tabGravity="fill">

        </android.support.design.widget.TabLayout>
    </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="android.support.design.widget.AppBarLayout$ScrollingViewBehavior">

    </android.support.v4.view.ViewPager>
</android.support.design.widget.CoordinatorLayout>

<android.support.design.widget.NavigationView
    android:id="@+id/navigation"
    android:layout_width="wrap_content"
    android:layout_height="match_parent"
    android:layout_gravity="start"
    app:menu="@menu/home_drawer_menu">

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

这是输出

这里是 gradle 文件

apply plugin: 'com.android.application'

android {
compileSdkVersion 23
buildToolsVersion "23.0.3"

defaultConfig {
    applicationId "com.softoven.ultron"
    minSdkVersion 15
    targetSdkVersion 23
    versionCode 1
    versionName "1.0"
}
buildTypes {
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
}
}

dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:23.3.0'
compile 'com.android.support:design:23.3.0'

compile 'org.jsoup:jsoup:1.6.1'
compile 'com.mikhaellopez:circularimageview:3.0.0'
compile 'com.android.support:recyclerview-v7:23.3.0'
compile 'com.mcxiaoke.volley:library:1.0.19'
compile 'com.nostra13.universalimageloader:universal-image-loader:1.9.5'
compile 'com.google.code.gson:gson:2.5'

}

如何让它发挥作用?

【问题讨论】:

  • 在下面查看我的答案。

标签: java android


【解决方案1】:

就我而言,我通过替换解决了这个问题,

tabLayout.setupWithViewPager(viewPager);

作者,

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

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

            }

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

            }
});

希望对你有所帮助。

【讨论】:

  • 完全......我遇到了同样的问题..标题没有显示..这个解决方案对我有用。
  • 你试过把app:tabSelectedTextColor"给TabLayout吗?
  • 不,我没有给出这个属性,他们没有标题的默认颜色吗?
  • 试试看..也许你的标题是原色..所以它们不可见
  • 让我检查一下。我认为它不会起作用,因为选定的标签标题没有覆盖空间
【解决方案2】:

我在 tablayout xml 中进行了以下更改,然后标题可见

 <android.support.design.widget.TabLayout
            android:id="@+id/tab"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            app:tabTextColor="#fff"
            app:tabGravity="fill"
            app:tabMode="scrollable"
            >

【讨论】:

  • 谢谢! tabMode="scrollable" 使我的标签标题出现。我做了书中的所有其他事情(使用 getPageTitle() 等适配器)。
【解决方案3】:

这将为您解决问题。在 Runnable 中添加您的 Tab Layout。

tabLayout.post(new Runnable() {
    @Override
    public void run() {
        tabLayout.setupWithViewPager(viewPager);
    }
});

【讨论】:

  • @ZeeshanShabbir 你能告诉我你的Gradle 吗?请在上面的问题中发布。
  • @ZeeshanShabbir 我认为这可能是设计中的错误 com.android.support:design:23.3.0 。您是否尝试过为此使用降级版本,例如 com.android.support:design:22.2.0 这目前对我有用。
  • 现在显示标题但滚动不流畅我必须滚动两次才能切换到新标签
  • @ZeeshanShabbir 为此,View Pager 本身有问题,请尝试交叉检查。并感谢我的回答,如果它对您有帮助,谢谢:) 我将编辑我的降级版本的答案..
  • 实际上你的答案不是解决方案。我正在使用最新的支持设计库,我需要在 xml 中进行一些更改才能使其工作,但现在问题在于滚动。我很感激你付出了一些努力来帮助我。
【解决方案4】:

按照你的风格:

 <style name="NavigationTabTextAppeareance" parent="TextAppearance.Design.Tab">
        <item name="android:textColor">#ffffff</item>
        <item name="android:textStyle">bold</item>
 </style>

在您的 XML 中:

 <android.support.design.widget.TabLayout
                android:id="@+id/tabs"
                android:layout_width="match_parent"
                android:layout_height="?attr/actionBarSize"
                android:layout_gravity="bottom"
                app:tabMode="scrollable"
                app:tabGravity="center"
                app:tabIndicatorHeight="4dip"
                app:tabTextAppearance="@style/NavigationTabTextAppeareance"
                app:tabIndicatorColor="#ffffff" />

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-01-20
    • 1970-01-01
    • 2021-08-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-03
    相关资源
    最近更新 更多