Заголовок вкладок TabLayout не отображается в Android Studio

Вкладки работают в приложении и показывают правильное название вкладок, вкладку дизайна даже после того, как я установил атрибут app:tabTextColor.

И я взволнован, потому что не вижу хода редактирования в редакторе при добавлении нового кода.

Основной класс:

  enter code public class MainActivity extends AppCompatActivity {

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

        Toolbar toolbar = findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);
        // Create an instance of the tab layout from the view.
        TabLayout tabLayout = findViewById(R.id.tab_layout);
        // Set the text for each tab.
        tabLayout.addTab(tabLayout.newTab().setText(R.string.tab_label1));
        tabLayout.addTab(tabLayout.newTab().setText(R.string.tab_label2));
        tabLayout.addTab(tabLayout.newTab().setText(R.string.tab_label3));
        // Set the tabs to fill the entire layout.
        tabLayout.setTabGravity(TabLayout.GRAVITY_FILL);
        // Use PagerAdapter to manage page views in fragments.
        // Each page is represented by its own fragment.
        final ViewPager viewPager = findViewById(R.id.pager);
        final PagerAdapter adapter = new PagerAdapter(getSupportFragmentManager(),tabLayout.getTabCount());
        viewPager.setAdapter(adapter);
        // Setting a listener for clicks.
        viewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tabLayout));
        tabLayout.addOnTabSelectedListener(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) {
            }
        });
    }
}

Адаптер пейджера:

  public class PagerAdapter extends FragmentStatePagerAdapter {


    private int mNumOfTabs;

    public PagerAdapter(FragmentManager fm, int NumberOfTabs) {
        super(fm);
        this.mNumOfTabs = NumberOfTabs;
    }

    @Override
    public Fragment getItem(int i) {
        switch (i) {
            case 0: return new TabFragment1();
            case 1: return new TabFragment2();
            case 2: return new TabFragment3();
            default: return null;
        }
    }

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

В приложении: Когда я запускаю приложение, все выглядит так, как я и ожидал. Заголовок вкладок TabLayout не отображается в Android Studio

XML-файл Код основного вида деятельности. Файлы фрагментов отображаются хорошо, и я их не прикреплял.

<RelativeLayout xmlns:android = "http://schemas.android.com/apk/res/android"
    xmlns:app = "http://schemas.android.com/apk/res-auto"
    xmlns:tools = "http://schemas.android.com/tools"
    android:id = "@+id/activity_main"
    android:layout_width = "match_parent"
    android:layout_height = "match_parent"
    android:padding = "16dp"
    tools:context = ".MainActivity">

    <android.support.v7.widget.Toolbar
        android:id = "@+id/toolbar"
        android:layout_width = "match_parent"
        android:layout_height = "wrap_content"
        android:layout_alignParentTop = "true"
        android:background = "@color/colorPrimary"
        android:minHeight = "?attr/actionBarSize"
        android:theme = "@style/ThemeOverlay.AppCompat.Dark.ActionBar"
        app:popupTheme = "@style/ThemeOverlay.AppCompat.Light" />

    <android.support.design.widget.TabLayout
        android:id = "@+id/tab_layout"
        android:layout_width = "match_parent"
        android:layout_height = "wrap_content"
        android:layout_below = "@id/toolbar"
        android:background = "?attr/colorPrimary"
        android:minHeight = "?attr/actionBarSize"
        android:theme = "@style/ThemeOverlay.AppCompat.Dark.ActionBar"
        app:tabIndicatorColor = "@color/design_default_color_primary_dark"
        app:tabTextColor = "#eac086"/>

    <android.support.v4.view.ViewPager
        android:id = "@+id/pager"
        android:layout_width = "match_parent"
        android:layout_height = "fill_parent"
        android:layout_below = "@id/tab_layout" />

</RelativeLayout

Android Studio выглядит так:Заголовок вкладок TabLayout не отображается в Android Studio

Файл Gradle:

   android {
    compileSdkVersion 28
    defaultConfig {
        applicationId "com.example.lateralnavigation"
        minSdkVersion 24
        targetSdkVersion 28
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'com.android.support:appcompat-v7:28.0.0'
    implementation 'com.android.support.constraint:constraint-layout:1.1.3'
    implementation 'com.android.support:design:28.0.0'
    implementation 'com.android.support:support-v4:28.0.0'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.android.support.test:runner:1.0.2'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
}

пожалуйста, добавьте сборку файла Gradle на уровне приложения, где вы добавляете зависимости

Tanveer Munir 27.01.2019 14:18

пожалуйста, поместите этот код выше

Tanveer Munir 27.01.2019 14:29

добавил плз смотрите выше

Mykhailo Vasylenko 27.01.2019 14:32

@ Михаил Василенко измените эту строку 'com.android.support:appcompat-v7:28.0.0-alpha1'

Tanveer Munir 27.01.2019 14:36

посмотрите этот отвечать

Tanveer Munir 27.01.2019 14:39

@TanveerMunir изменил зависимости, стиль, но ничего не помогло. Другие макеты отображаются хорошо, но в XML-ответе MainActivity только цвета фона меняются на TabLayout.

Mykhailo Vasylenko 27.01.2019 15:04

посмотрите этот отвечать и используйте android.support.design.widget.CoordinatorLayout

Tanveer Munir 27.01.2019 15:12

вы создаете вкладки программно, поэтому они не отображаются там, если вы хотите показать их, добавьте элементы вкладок в XML.

Tanveer Munir 27.01.2019 15:17
2
8
1 383
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

К сожалению, редактор предварительного просмотра не сможет сказать, что вы написали в своем коде java/kotlin. Он генерирует предварительный просмотр из вашего xml, что вы можете сделать для предварительного просмотра вкладок, так это добавить их непосредственно в xml:

<android.support.design.widget.TabLayout
    android:id = "@+id/tab_layout"
    android:layout_width = "match_parent"
    android:layout_height = "wrap_content"
    android:layout_below = "@id/toolbar"
    android:background = "?attr/colorPrimary"
    android:minHeight = "?attr/actionBarSize"
    android:theme = "@style/ThemeOverlay.AppCompat.Dark.ActionBar"
    app:tabIndicatorColor = "@color/design_default_color_primary_dark"
    app:tabTextColor = "#eac086">
  <android.support.design.widget.TabItem
     android:text = "@string/tab_text"/>
  <android.support.design.widget.TabItem
     android:text = "@string/tab_text"/>
 <android.support.design.widget.TabItem
     android:text = "@string/tab_text"/>
</android.support.design.widget.TabLayout>

Это, однако, изменит способ раздувания макета, поскольку вкладки уже будут в xml. Не нужно будет делать:

tabLayout.addTab(tabLayout.newTab().setText(R.string.tab_label1));

Поскольку вкладка будет в xml, вам нужно будет только присвоить ей идентификатор и использовать findViewById для фактического доступа к вкладке. Если у вас есть статическое количество вкладок, вы даже можете использовать:

tabLayout.getTabAt(position)

Для доступа к вкладке в заданной позиции.

Я знаю этот вариант, но он занимает много времени, каждый раз, когда я делаю какие-то изменения, я должен запускать приложение, чтобы увидеть TabLayout. Спасибо за ответ

Mykhailo Vasylenko 27.01.2019 14:39

Да, если вы хотите увидеть предварительный просмотр, вам нужно использовать xml. Программное добавление вкладок не будет отображаться в предварительном просмотре редактора.

Levi Moreira 27.01.2019 14:41

@MykhailoVasylenko, но если вы хотите грабить в дизайне, вы должны добавить элементы вкладки в XML

Tanveer Munir 27.01.2019 15:18

Другие вопросы по теме