我使用Android支持设计库为我正在处理的应用程序构建配置文件视图.
该配置文件由一个标题组成,标题图片作为背景,中心是圆形图片.此外,标题的底角还有一个小视图.
标题下方是一个带有tablayout的viewpager.
我面临的问题是Android 5.1.1和5.0.2及更低版本之间存在不一致.
以下是使用5.1.1 Android在Nexus 5上显示配置文件的方式:

以下是配置文件在带有5.0.2 Android的Xperia Z2上的显示方式:

这是代码:
<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
我正在使用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之前那样做的事情.无论有多少标签,活跃的标签总是在中心.我怎么能做到这一点?谢谢.
嗨我在片段中有一个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
我正在尝试使用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)
我该怎么做才能使我的片段在标签下面开始?
我的问题已经回答了好几次当它是一个TabActivity用tabWidgets.但我无法找到关于相对新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)
谢谢 !
每当我最初创建我的活动时,一切都很顺利,因为我能够正确地扩充我的布局.然而,问题是每当我切换到使用另一个应用程序,然后回到我自己的应用程序,我收到一个错误,说明TabLayout为空,导致我的应用程序崩溃.如果我切换到另一个应用程序几分钟,我DrawerLayout是空的,也导致我的应用程序崩溃.
如果我正确理解了Android生命周期,我意识到当活动从背景到前景时,活动会被重新创建,并且onCreate从这里引用该方法再次被调用:Android活动生命周期 - 这些方法的所有内容是什么?.但是,我不明白为什么当应用程序启动时,一切正常,但是当我进入后台时,或者将TabLayout其DrawerLayout设置为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) 嘿伙计们请调查此事.我坚持解决这个问题.
我使用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
我有一个使用带有几个片段的TabLayout的ViewPager.我想从其中一个ViewPager片段中单击一个按钮,并使用选项卡名称将用户定向到另一个选项卡/片段.
单击该按钮时,我希望TabLayout更改以及显示与该选项卡关联的片段.我还需要发送附加数据以显示新片段.
我无法访问ViewPager setCurrentItem(int index).理想情况下,我想与父母沟通以完成请求.
android android-fragments android-viewpager android-tablayout
我正在使用TabLayout并ViewPager一起做一个标签式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
我有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