标签: android-tablayout

Android CoordinatorLayout - Android版本之间的不一致

我使用Android支持设计库为我正在处理的应用程序构建配置文件视图.

该配置文件由一个标题组成,标题图片作为背景,中心是圆形图片.此外,标题的底角还有一个小视图.

标题下方是一个带有tablayout的viewpager.

我面临的问题是Android 5.1.1和5.0.2及更低版本之间存在不一致.

以下是使用5.1.1 Android在Nexus 5上显示配置文件的方式: 此处没有显示TabLayout

以下是配置文件在带有5.0.2 Android的Xperia Z2上的显示方式: 标题不显示CollapsingToolbarLayout中的视图

这是代码:

<FrameLayout
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:fitsSystemWindows="true"
android:background="@color/white">

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

    <android.support.design.widget.AppBarLayout
        android:id="@+id/appbar"
        android:layout_height="250dp"
        android:layout_width="match_parent"
        android:fitsSystemWindows="true"
        android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">

        <android.support.design.widget.CollapsingToolbarLayout
            android:id="@+id/profile_collapsingtoolbar"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:fitsSystemWindows="true"
            app:layout_scrollFlags="scroll|exitUntilCollapsed">

            <ImageView
                android:id="@+id/profile_header"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:fitsSystemWindows="true"
                android:scaleType="centerCrop"
                app:layout_collapseMode="parallax"
                app:layout_scrollFlags="scroll|enterAlways"/>

            <com.makeramen.roundedimageview.RoundedImageView
                android:id="@+id/profile_image"
                android:layout_width="90dp"
                android:layout_height="90dp"
                app:riv_corner_radius="45dp"
                app:riv_border_color="@color/red"
                app:riv_border_width="1dp"
                android:layout_gravity="center"
                app:layout_collapseMode="none"
                app:layout_scrollFlags="scroll|enterAlways" />

            <FrameLayout
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:padding="10dp"
                android:layout_margin="5dp"
                android:layout_gravity="bottom|right"
                android:background="@drawable/shape_usertype_background">
                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:textSize="12sp"
                    android:textColor="@color/white"
                    android:text="Professional"/>
            </FrameLayout>

            <android.support.v7.widget.Toolbar
                android:id="@+id/profile_toolbar"
                android:layout_width="match_parent"
                android:layout_height="?attr/actionBarSize"
                app:layout_collapseMode="pin"
                app:layout_scrollFlags="scroll|enterAlways"
                app:popupTheme="@style/ThemeOverlay.AppCompat.Light"/>

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

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

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

android android-support-library android-coordinatorlayout android-collapsingtoolbarlayout android-tablayout

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

TabLayout中的中心活动选项卡

我正在使用Google的新TabLayout设计支持库,并想知道如何将活动标签置于该布局中.

目前我将这样的整个布局集中在一起:

<android.support.design.widget.TabLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal" />
Run Code Online (Sandbox Code Playgroud)

现在我想将活动标签置于该布局中.像TabLayout之前那样做的事情.无论有多少标签,活跃的标签总是在中心.我怎么能做到这一点?谢谢.

android material-design android-tablayout

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

带有ViewPager的TabLayout无法在片段Android中运行

嗨我在片段中有一个TabLayout和ViewPager.但是我不能在tab之间滑动来到子片段(在Activity中正常工作但在片段中不起作用).

这是我的Tablayout内部片段的代码:

@Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {

        View inflateView = inflater.inflate(R.layout.fragment_assign_beacon_to_event, container, false);

        //Viewpager and TabLayout
        viewPager = (ViewPager)inflateView.findViewById(R.id.viewPager);
        viewPager.setAdapter(new CustomAdapter(getFragmentManager(), getContext()));

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


        // Inflate the layout for this fragment
        return inflateView;
    }

@Override
    public void onActivityCreated(Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);

    tabLayout.post(new Runnable() {
                @Override
                public void run() {
                    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 …
Run Code Online (Sandbox Code Playgroud)

android android-fragments android-viewpager android-tablayout

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

Android TabLayout重叠Fragment的内容

我正在尝试使用TabLayout和Viewpager进行活动.
我的问题是TabLayout与Viewpager的顶部重叠,因此全部内容不可见.

原始图像
结果

<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.v7.widget.Toolbar
            android:id="@+id/toolbar"
            android:layout_width="match_parent"
            android:layout_height="?attr/actionBarSize"
            android:background="?attr/colorPrimary"
            app:popupTheme="@style/AppTheme.PopupOverlay"/>

        <android.support.design.widget.TabLayout
            android:id="@+id/tabs"
            android:layout_width="match_parent"
            android:layout_height="?attr/actionBarSize"
            app:tabMode="fixed"
            app:tabGravity="fill"/>
    </android.support.design.widget.AppBarLayout>

    <android.support.v4.view.ViewPager
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/view_pager"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

    <android.support.design.widget.FloatingActionButton
        android:id="@+id/fab"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="bottom|end"
        android:layout_margin="@dimen/fab_margin"
        android:src="@drawable/ic_add_white_24dp"/>

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

我该怎么做才能使我的片段在标签下面开始?

android android-fragments android-tablayout

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

如何在TabLayout中检测已选择的选项卡上的单击

我的问题已经回答了好几次当它是一个TabActivitytabWidgets.但我无法找到关于相对新TabLayout观点的任何内容.

这很简单,比如facebook,我想点击已经选中的标签,让我的列表向上滚动直到它的开始.但我无法弄清楚我的听众放在哪里.

我尝试了TabLayout自己,mTabLayout.getChildAt()然后继续TabLayout.getTabAt().getCustomView().


编辑:更正:正如CommonsWare在其答案的评论中提到的那样,我不得不重写"onTabSelected"的行为.

mTabLayout = (TabLayout) findViewById(R.id.tabs);
mTabLayout.setupWithViewPager(mViewPager);

for (int i = 0; i < mTabLayout.getTabCount(); i++) {
    mTabLayout.getTabAt(i).setIcon(tabIcons[i]);
}

mTabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
    @Override
    public void onTabSelected(TabLayout.Tab tab) {
        mViewPager.setCurrentItem(tab.getPosition());
    }

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

    }

    @Override
    public void onTabReselected(TabLayout.Tab tab) {
        if (tab.getPosition() == PAGE_FEED) {
                ((PagerNewsFeedFragment) mViewPagerAdapter.getRegisteredFragment(PAGE_FEED)).scrollToTop();
            }
    }
});
Run Code Online (Sandbox Code Playgroud)

谢谢 !

android android-tablayout

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

从后台恢复活动后,DrawerLayout或TabLayout为null?

每当我最初创建我的活动时,一切都很顺利,因为我能够正确地扩充我的布局.然而,问题是每当我切换到使用另一个应用程序,然后回到我自己的应用程序,我收到一个错误,说明TabLayout为空,导致我的应用程序崩溃.如果我切换到另一个应用程序几分钟,我DrawerLayout是空的,也导致我的应用程序崩溃.

如果我正确理解了Android生命周期,我意识到当活动从背景到前景时,活动会被重新创建,并且onCreate从这里引用该方法再次被调用:Android活动生命周期 - 这些方法的所有内容是什么?.但是,我不明白为什么当应用程序启动时,一切正常,但是当我进入后台时,或者将TabLayoutDrawerLayout设置为null.这是我的尝试:

news_feed.java:

private static DrawerLayout drawer;
private static TabLayout tabLayout;

public class news_feed extends BatchAppCompatActivity implements NavigationView.OnNavigationItemSelectedListener {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.news_feed);
        drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
        toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);

        //Listen for navigation events
        ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
            this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close){

        public void onDrawerOpened(View view) {
            super.onDrawerOpened(view);
        }

        /** Called when a drawer has settled in a …
Run Code Online (Sandbox Code Playgroud)

java android drawerlayout android-tablayout

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

OnBackpressed在tablayout上获取空视图

嘿伙计们请调查此事.我坚持解决这个问题.

我使用TabLayout和设置了片段标签ViewPager.问题是当我移动到下一个片段然后我按下后退按钮我得到空标签视图.

在这里我附上我的代码.

这是我的家庭片段,当我点击衬衫时,它将我移动到下一个片段

正如我所说,之前的片段让我感动这个产品细节片段. 现在,当我按下后退按钮时,它给我空视图

正如我所说,它给了我这个空洞的看法

home.xml

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

    <LinearLayout 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:gravity="center"
    android:orientation="vertical">


    <android.support.design.widget.TabLayout
        android:id="@+id/tabLayout"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="?attr/colorPrimary"
        android:minHeight="?attr/actionBarSize"
        android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
        app:tabIndicatorColor="@android:color/white"
        app:tabIndicatorHeight="4dp" />

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

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

home.java(片段)

@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {

    View view = inflater.inflate(R.layout.home, container, false);

    ((Drawer) getActivity()).setActionBarTitle("Home");

    Toast.makeText(getActivity(), "entry count" +    getActivity().getSupportFragmentManager().getBackStackEntryCount(), Toast.LENGTH_SHORT).show();


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

    tabLayout.addTab(tabLayout.newTab().setText("Products"));

    tabLayout.addTab(tabLayout.newTab().setText("Category"));

    tabLayout.setTabGravity(TabLayout.GRAVITY_FILL);


    viewPager = (ViewPager) view.findViewById(R.id.pager);
    Pager adapter = new Pager(getActivity().getSupportFragmentManager(), tabLayout.getTabCount()); …
Run Code Online (Sandbox Code Playgroud)

android android-adapter android-fragments android-viewpager android-tablayout

5
推荐指数
2
解决办法
1451
查看次数

从子片段更改ViewPager片段

我有一个使用带有几个片段的TabLayout的ViewPager.我想从其中一个ViewPager片段中单击一个按钮,并使用选项卡名称将用户定向到另一个选项卡/片段.

单击该按钮时,我希望TabLayout更改以及显示与该选项卡关联的片段.我还需要发送附加数据以显示新片段.

我无法访问ViewPager setCurrentItem(int index).理想情况下,我想与父母沟通以完成请求.

android android-fragments android-viewpager android-tablayout

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

TabLayout在横向上没有显示gravity_fill和mode_fixed

我正在使用TabLayoutViewPager一起做一个标签式viewpager.

我有景观,其中一个怪异的行为TabLayout.GRAVITY_FILL,并TabLayout.MODE_FIXED似乎不工作,无论在Java或XML设定,(他们的肖像做就好了).

然而!当我做三个标签时,一切都很好!

问题在于两个标签 - 在横向上.

我的活动:

public class TabbedViewPager extends AppCompatActivity {
    private ViewPager viewPager;

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

        initTabLayout1();
    }

    public void initTabLayout1() {
        TabLayout tabLayout = (TabLayout) findViewById(R.id.tab_layout);

        TabLayout.Tab tab1 = tabLayout.newTab();
        tab1.setText("Tab 1");
        tabLayout.addTab(tab1);
        TabLayout.Tab tab2 = tabLayout.newTab();
        tab2.setText("Tab 2");
        tabLayout.addTab(tab2);
        //TabLayout.Tab tab3 = tabLayout.newTab();
        //tab3.setText("Tab 3");
        //tabLayout.addTab(tab3);
        tabLayout.setTabGravity(TabLayout.GRAVITY_FILL);
        tabLayout.setTabMode(TabLayout.MODE_FIXED);

        viewPager = (ViewPager) findViewById(R.id.view_pager);
        final TabbedPagerAdapter adapter = new TabbedPagerAdapter(getSupportFragmentManager(),
                tabLayout.getTabCount());
        viewPager.setAdapter(adapter);

        viewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tabLayout)); …
Run Code Online (Sandbox Code Playgroud)

java android android-layout android-viewpager android-tablayout

5
推荐指数
2
解决办法
1713
查看次数

如何在自定义选项卡布局中更改选项卡布局所选文本的颜色

我有viewpager有4个选项卡,用tablayout实现它。因为我想将字体更改为自定义字体,所以我使用了自定义标签布局。现在的问题是,所选的标签文本颜色不会随着tabSelectedTextColor改变。

这是我的Java代码:

package com.example.noavaran.drugstore.Activity;

import android.content.Context;
import android.graphics.Color;
import android.graphics.PorterDuff;
import android.graphics.Typeface;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.design.widget.TabLayout;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.AppCompatTextView;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;

import com.example.noavaran.drugstore.Fragment.AddressFragment;
import com.example.noavaran.drugstore.Fragment.IssueFragment;
import com.example.noavaran.drugstore.Fragment.MenuFragment;
import com.example.noavaran.drugstore.Fragment.SearchFragment;
import com.example.noavaran.drugstore.Helper.CustomViewPager;
import com.example.noavaran.drugstore.R;

import java.util.ArrayList;
import java.util.List;

import layout.fragment_approve;
import uk.co.chrisjenx.calligraphy.CalligraphyContextWrapper;
import uk.co.chrisjenx.calligraphy.CalligraphyUtils;

public class MainPageActivity extends AppCompatActivity {
    private TabLayout tabLayout;
    public Context context; …
Run Code Online (Sandbox Code Playgroud)

android android-viewpager viewpagerindicator android-tablayout

5
推荐指数
2
解决办法
6144
查看次数