tabIndicator не отображается должным образом (он отображается наоборот)

Я добавил макет вкладки в свою деятельность. Все работает нормально, но индикаторы вкладки не отображаются должным образом. Я добавляю фотографию ниже, чтобы вы могли получить представление. Я имею в виду, что когда я нажимаю «Обзор» (индикатор вкладки показан ниже фрагмента «Подробности») и наоборот.

нажмите, чтобы увидеть изображение

Ниже приведен код XML (Activity_inventory_detail):

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/activity_inventory_detail_"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <com.github.fafaldo.fabtoolbar.widget.FABToolbarLayout
        android:id="@+id/fabtoolbar"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:containerId="@+id/fabtoolbar_container"
        app:fabId="@+id/fabtoolbar_fab"
        app:fabToolbarId="@+id/fabtoolbar_toolbar"
        app:fadeInFraction="0.2"
        app:hideDuration="200"
        app:horizontalMargin="16dp"
        app:showDuration="600"
        app:verticalMargin="16dp">

        <android.support.design.widget.TabLayout
            android:id="@+id/tab_layout"
            android:layout_width="match_parent"
            android:layout_height="35dp"
            android:background="@color/colorPrimary"
            app:tabGravity="fill"
            app:tabIndicatorColor="@color/white"
            app:tabMaxWidth="0dp"
            app:tabMode="fixed"
            app:tabSelectedTextColor="@color/white"
            app:tabTextColor="@color/white" />

        <com.aaryanapps.hub.ui.controls.LockableViewPager
            android:id="@+id/pager_inventory_detail"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_below="@+id/tab_layout"
            android:background="@color/white"
            app:layout_behavior="@string/appbar_scrolling_view_behavior" />

        <RelativeLayout
            android:id="@+id/fabtoolbar_container"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_alignParentBottom="true"
            android:layout_alignParentRight="true">

            <android.support.design.widget.FloatingActionButton
                android:id="@+id/fabtoolbar_fab"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:src="@drawable/abc_ic_menu_share_mtrl_alpha"
                app:backgroundTint="@color/colorPrimary"
                app:fabSize="mini" />

        </RelativeLayout>

        <LinearLayout
            android:id="@+id/fabtoolbar_toolbar"
            android:layout_width="match_parent"
            android:layout_height="50dp"
            android:layout_alignParentBottom="true"
            android:orientation="horizontal"
            app:backgroundTint="@color/colorPrimary">

            <ImageView
                android:id="@+id/one"
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:scaleType="centerInside"
                android:src="@drawable/abc_ic_menu_share_mtrl_alpha" />


            <ImageView
                android:id="@+id/two"
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:scaleType="centerInside"
                android:src="@drawable/ic_menu_gallery_white" />


            <ImageView
                android:id="@+id/three"
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:backgroundTint="@color/tranperent_white"
                android:scaleType="centerInside"
                android:src="@drawable/ic_menu_camera_white" />

        </LinearLayout>

    </com.github.fafaldo.fabtoolbar.widget.FABToolbarLayout>

</RelativeLayout>  

Код Java (Inventory_deatil_Activity.java) приведен ниже (не может опубликовать полный код, так как в нем много строк), добавлен только Tablayout и связанная с ним часть. Это код, в котором я объявил Tablayout.

открытый класс Inventory_detail_Activity расширяет AbstractKActivity, реализует DetailsDataListener, View.OnClickListener, SimpleGestureFilter.SimpleGestureListener, ContentManager.PickContentListener {

public static final String TAG_LABEL_OVERVIEW = "Overview";
public static final String TAG_LABEL_DETAILS = "Detail";
InventoryItemsList inventoryItems;
protected int current_item_index = 0;
public List<InventoryItem> inventory_items_list = new ArrayList<>();
InventoryItem inventory_item;
private ViewPager viewPager;
private ViewPagerAdapter pagerAdapter;
TabLayout tabLayout;  

здесь я инициализировал Tablayout.

protected void init() {
 final TabLayout tabLayout = (TabLayout)findViewById(R.id.tab_layout);

 viewPager = (ViewPager) findViewById(R.id.pager_inventory_detail);
 setupViewPager(viewPager);
 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) {

        }
    });  

Ниже приведен код для ViewPagerAdapter.

class ViewPagerAdapter extends SmartFragmentStatePagerAdapter<ItemDetailAbstractFragment> {
        //private final List<Fragment> mFragmentList = new ArrayList<>();
        private final List<String> mFragmentTitleList = new ArrayList<>();

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

        @Override
        public Fragment getItem(int position) {
            ItemDetailAbstractFragment caf;
            switch (position) {
                case 0: // Fragment # 0 - This will show FirstFragment
                    caf = new ItemDetailOverviewFragment();
                    break;
                case 1: // Fragment # 0 - This will show FirstFragment different title
                    caf = new ItemDetailDetailsFragment();
                    break;
                default:
                    return null;
            }

            Bundle args = ActivityStateManager.getInstance().getActivityState(getLocalClassName());
            if (args == null) {
                args = new Bundle();
            }

            caf.setFlowItem(inventory_item);

            if(current_item_index == -1) {
                caf.setFlowItem(inventory_item);
                caf.populateData();
            }
            return caf;
        }

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


        public void addFragment(int position, String title) {
            mFragmentTitleList.add(position, title);
        }

        @Override
        public CharSequence getPageTitle(int position) {
            return mFragmentTitleList.get(position);
        }

    }

    @Override
    public void onPause() {
        Log.e("DEBUG", "onPause of ClientListTabactivity");
        super.onPause();
//        currentState.putSerializable("flowItem",inventory_item);
//        ActivityStateManager.getInstance().updateActivityState(getLocalClassName(), currentState);
    }

    @Override
    protected void onSaveInstanceState(Bundle outState) {
        super.onSaveInstanceState(outState);
//        outState.putSerializable("flowItem",inventory_item);
//        ActivityStateManager.getInstance().updateActivityState(getLocalClassName(), outState);

        contentManager.onSaveInstanceState(outState);

    }

    @Override
    protected void onRestoreInstanceState(Bundle savedInstanceState) {
        super.onRestoreInstanceState(savedInstanceState);
        contentManager.onRestoreInstanceState(savedInstanceState);
    }

    private void setupViewPager(ViewPager viewPager) {

        pagerAdapter = new ViewPagerAdapter(getSupportFragmentManager());

        pagerAdapter.addFragment(0, TAG_LABEL_OVERVIEW);

        pagerAdapter.addFragment(1, TAG_LABEL_DETAILS);

        viewPager.setAdapter(pagerAdapter);

        //updateFragmentsForFlowItem();

    }  

[Отредактировано]:

это код AbstractActivity:

открытый класс AbstractKActivity расширяет AppCompatActivity {

protected int content_view = 0;

protected String mTitle = "";

protected TextView title;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    prepareInit();

    if (content_view != 0) {
        setContentView(content_view);
    }
    initToolbar();


    processIntent();

    init();

}

protected void initToolbar() {
    getSupportActionBar().setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM);
    getSupportActionBar().setCustomView(R.layout.custom_actionbar);
    title=(TextView)findViewById(getResources().getIdentifier("action_bar_title", "id", getPackageName()));
    title.setText(mTitle);
    getSupportActionBar().setDisplayHomeAsUpEnabled(true);
   // getSupportActionBar().setTitle(mTitle);

}


protected void processIntent() {

}

protected void init() {

}

protected void prepareInit() {

}

protected void setToolbarTitleText(String titleText) {
    mTitle = titleText;
    title.setText(titleText);
}

}


person Bhavik Mehta    schedule 08.08.2017    source источник


Ответы (1)


Сначала измените свой КОД. Не return null; . Вы должны вернуть свой фрагмент по умолчанию.

Не

case 1: // Fragment # 0 - This will show FirstFragment different title
                caf = new ItemDetailDetailsFragment();
                break;
            default:
                return null;

Выполнить

 @Override
    public Fragment getItem(int position) {
        ItemDetailAbstractFragment caf;
        switch (position) {
            case 0: // Fragment # 0 - This will show FirstFragment
                caf = new ItemDetailOverviewFragment();
                break;
            case 1: // Fragment # 0 - This will show FirstFragment different title
                caf = new ItemDetailDetailsFragment();
                break;
            default:
                return new ItemDetailOverviewFragment();
        }

Во-вторых

viewPager = (ViewPager) findViewById(R.id.pager_inventory_detail);
setupViewPager(viewPager);
tabLayout.setupWithViewPager(viewPager);
viewPager.setCurrentItem(0); // Declare this

ИЗМЕНИТЬ

 public void onTabSelected(TabLayout.Tab tab) {
            tab.select();
        }
person IntelliJ Amiya    schedule 08.08.2017
comment
да, это правда. Но это не решило проблему tabIndcator @IntelliJ Amiya - person Bhavik Mehta; 08.08.2017
comment
@BhavikMehta установил setCurrentItem(0); - person IntelliJ Amiya; 08.08.2017
comment
@BhavikMehta, не могли бы вы поделиться AbstractKActivity . Если AbstractKActivity является абстрактным классом, удалите abstract - person IntelliJ Amiya; 08.08.2017
comment
нет, это не абстрактно. я добавил AbstractActivity, проверьте @IntelliJ Amiya - person Bhavik Mehta; 08.08.2017
comment
@BhavikMehta все в порядке. Грядет нелепая ошибка. - person IntelliJ Amiya; 08.08.2017
comment
@BhavikMehta Создайте простую демонстрацию - person IntelliJ Amiya; 08.08.2017
comment
Привет, @IntelliJ Amiya, я узнал, что проблема возникла из-за fabtoolbarLayout. если я уберу это, то индикатор табуляции будет работать нормально. - person Bhavik Mehta; 30.08.2017