Tab title in tablayout + pager view Does not appear in Android 5.0 and higher after adding CoordinatorLayout

I developed a tab layout for my application, it works fine in all versions of Android. but the problem starts with Lollipop and higher when I add a fragment to display images from the database. Tabs are deleted after scrolling (as shown in the screenshots.)

Android screen kitkat

enter image description here

but the same screen changed to lollipop on Android after scrolling the tab like

enter image description here

on one tab he completely left as

enter image description here

My code for adding tablayout ...

CODE

public class Event360View extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_tkt_360_view);

    getSupportActionBar().setDisplayHomeAsUpEnabled(true);
    getSupportActionBar().setHomeButtonEnabled(true);

    TabLayout tabLayout = (TabLayout) findViewById(R.id.tab_layout);

    tabLayout.addTab(tabLayout.newTab().setText("Event Dtl"));
    tabLayout.addTab(tabLayout.newTab().setText("Minutes"));
    tabLayout.addTab(tabLayout.newTab().setText("Images"));
    tabLayout.addTab(tabLayout.newTab().setText("Chat"));

    tabLayout.setTabGravity(TabLayout.GRAVITY_FILL);

    final ViewPager viewPager = (ViewPager) findViewById(R.id.pager);
    final PagerAdapter adapter = new PagerAdapter
            (getSupportFragmentManager(), tabLayout.getTabCount());
    viewPager.setAdapter(adapter);
    viewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tabLayout));
    if(General.tabflg) {
        viewPager.setCurrentItem(1);
        General.tabflg=false;
    }
    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) {

        }
    });
}

   }`

Class pageradapter

public class PagerAdapter extends FragmentStatePagerAdapter {
int mNumOfTabs;


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

@Override
public Fragment getItem(int position) {

    switch (position) {
        case 0:
            TabDetail tab1 = new TabDetail();
            return tab1;
        case 1:
            TabMinutes tab2 = new TabMinutes();
            return tab2;
        case 2:
            TabImg tab3 = new TabImg();
            return tab3;
        case 3:
            TabConversation tab4 = new TabConversation();
            return tab4;
        default:
            return null;
    }
}

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

build.gradle

android {
compileSdkVersion 25
buildToolsVersion "25.0.1"
defaultConfig {
    applicationId "cal.lipi.lipicalapp"
    minSdkVersion 15
    targetSdkVersion 25
    versionCode 1
    versionName "1.0"
    useLibrary 'org.apache.http.legacy'
    testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
}
}

dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
compile 'com.android.support:appcompat-v7:23.2.1'
compile 'com.android.support:design:23.2.1'
compile 'com.android.support:support-v4:23.2.1'
compile 'com.android.support:recyclerview-v7:23.1.1'
compile 'com.android.volley:volley:1.0.0'
compile 'com.github.bumptech.glide:glide:3.7.0'
compile 'junit:junit:4.12'
testCompile 'junit:junit:4.12'
}

main_layout XML

<RelativeLayout
android:id="@+id/main_layout"
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:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".Event360View">

<!--<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="?attr/colorPrimary"-->
    <!--android:elevation="6dp"-->
    <!--android:minHeight="?attr/actionBarSize"-->
    <!--android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"-->
    <!--app:popupTheme="@style/ThemeOverlay.AppCompat.Light"/>-->

<LinearLayout
    android:id="@+id/ll_360genrate"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >
    <ProgressBar
        android:id="@+id/tic_360progressBar_gen"
        style="?android:attr/progressBarStyleLarge"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center|center" />
</LinearLayout>
<LinearLayout
    android:id="@+id/ll_360view"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical" >
    <android.support.design.widget.TabLayout
        android:id="@+id/tab_layout"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="?attr/colorPrimary"
        android:elevation="6dp"
        android:minHeight="?attr/actionBarSize"
        android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"/>
    <!--android:layout_below="@+id/toolbar"-->

    <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"/>
</LinearLayout>

The actual problem is not in the code above. The problem occurs when I add the following snippet in the application.

tabImg.class

package cal.calapp;

import android.app.ProgressDialog;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentTransaction;
import android.support.v7.widget.DefaultItemAnimator;
import android.support.v7.widget.GridLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.support.v7.widget.Toolbar;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ListView;
import android.widget.Toast;

import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.JsonArrayRequest;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import java.util.ArrayList;


import cal.calapp.adapter.GalleryAdapter;
import cal.calapp.app.AppController;
import cal.calapp.model.Image;

import static com.bumptech.glide.gifdecoder.GifHeaderParser.TAG;

public class TabImg extends Fragment //implements 
AdapterView.OnItemClickListener
{
    ListView lvVisDtl;
    private static final String endpoint = 
"http://xx.xxx.xxx.xx:81/phpwebservice/xxx/test_ver1.0/img_test.json";
//    private ProgressDialog pDialog;
    private GalleryAdapter mAdapter;
    private RecyclerView recyclerView;
    private ArrayList<Image> images;
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
Bundle savedInstanceState)
    {
        return inflater.inflate(R.layout.tab_img, container, false);
    }

    @Override
    public void onStart()
    {
    super.onStart();
    try
    {
//            Toolbar toolbar = (Toolbar) 
getActivity().findViewById(R.id.toolbar);
//            getActivity().setSupportActionBar(toolbar);

        recyclerView = (RecyclerView) getActivity().findViewById(R.id.recycler_view);

//            pDialog = new ProgressDialog(getActivity());
        images = new ArrayList<>();

        mAdapter = new GalleryAdapter(getActivity().getApplicationContext(), images);

        RecyclerView.LayoutManager mLayoutManager = new GridLayoutManager(getActivity().getApplicationContext(), 2);
        recyclerView.setLayoutManager(mLayoutManager);
        recyclerView.setItemAnimator(new DefaultItemAnimator());
        recyclerView.setAdapter(mAdapter);

        recyclerView.addOnItemTouchListener(new GalleryAdapter.RecyclerTouchListener(getActivity().getApplicationContext(), recyclerView, new GalleryAdapter.ClickListener() {
            @Override
            public void onClick(View view, int position) {
                Bundle bundle = new Bundle();
                bundle.putSerializable("images", images);
                bundle.putInt("position", position);

                FragmentTransaction ft = getActivity().getSupportFragmentManager().beginTransaction();
                SlideshowDialogFragment newFragment = SlideshowDialogFragment.newInstance();
                newFragment.setArguments(bundle);
                newFragment.show(ft, "slideshow");
            }

            @Override
            public void onLongClick(View view, int position) {

            }
        }));
        fetchImages();

    }
    catch(Exception ex)
    {
        Toast.makeText(getActivity().getBaseContext(),ex.toString(), Toast.LENGTH_LONG).show();
    }
}
private void fetchImages() {


    JsonArrayRequest req = new JsonArrayRequest(endpoint,
            new Response.Listener<JSONArray>() {
                @Override
                public void onResponse(JSONArray response) {
                    Log.d(TAG, response.toString());

                    images.clear();
                    for (int i = 0; i < response.length(); i++) {
                        try {
                            JSONObject object = response.getJSONObject(i);
                            Image image = new Image();
                            image.setName(object.getString("name"));

                            JSONObject url = object.getJSONObject("url");
                            image.setSmall(url.getString("small"));
                            image.setMedium(url.getString("medium"));
                            image.setLarge(url.getString("large"));
                            image.setTimestamp(object.getString("timestamp"));

                            images.add(image);

                        } catch (JSONException e) {
                            Log.e(TAG, "Json parsing error: " + e.getMessage());
                        }
                    }

                    mAdapter.notifyDataSetChanged();
                }
            }, new Response.ErrorListener() {
        @Override
        public void onErrorResponse(VolleyError error) {

        }
    });

    AppController.getInstance().addToRequestQueue(req);

}
}

Xml for tabImg

<android.support.design.widget.CoordinatorLayout 
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:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true">

<android.support.design.widget.AppBarLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:theme="@style/AppTheme.AppBarOverlay">



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

<include layout="@layout/content_main" />

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

Please help me solve this problem.

+4
2

, . , .

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:ads="http://schemas.android.com/apk/res-auto"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

     <android.support.design.widget.TabLayout
        android:id="@+id/tabs"
        style="@style/style_tab_strip"
        android:layout_width="match_parent"
        android:layout_height="?attr/actionBarSize"
        app:tabTextAppearance="@style/CustomTabText" />

    <android.support.v4.view.ViewPager
        android:id="@+id/pager"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_marginTop="15dp"
        android:layout_weight="1" />
</LinearLayout>

my gradle

compile 'com.android.support:appcompat-v7:25.0.0'
compile 'com.android.support:support-v4:25.0.0'
compile 'com.android.support:design:25.0.0'

 buildToolsVersion "25.0.0"

, : https://github.com/hitesh-dhamshaniya/AndroidMaterialDesignTabViewpager

+4

(@Hitesh Dhamshaniya) , CoordinatorLayout XML

    android:fitsSystemWindows="true"

Android.

0

Source: https://habr.com/ru/post/1673948/


All Articles