我已经Toolbar与TabLayout我想隐藏/显示在某些点上,我想动画选项卡的隐藏/显示过程(工具栏仍然可见)......把一个规模动画的TabLayout皮,但高度工具栏保持不变,好像标签在那里......任何建议?
public void showTabs(boolean show) {
if (show) {
//tabLayout.setVisibility(View.VISIBLE);
tabLayout.animate().scaleY(1).setInterpolator(new DecelerateInterpolator()).start();
} else {
tabLayout.animate().scaleY(0).setInterpolator(new AccelerateInterpolator()).start();
//tabLayout.setVisibility(View.GONE);
}
}
Run Code Online (Sandbox Code Playgroud) 所以我试图在我的主要导航栏下方的标签栏和布局处理我的主要活动.
我似乎无法获得ViewPager/TabLayout(不确定问题的原因,这是新的)加载正确的片段.我已经阅读了大量的文档,并检查了超过1个教程,看看我是否正确地做了这个,似乎我正在做同样的事情......
在OnTabSelectedListener我的TabLayout正确看到标签的变化,并在OnTabSelected林打电话viewPager.setCurrentItem(tab.getPosition()),试图把我viewpagers项目,但它仍然没有工作.首次加载时,它会加载第一个和第二个选项卡(我可以通过片段onCreate方法发送的API请求看到),当我点击其他选项卡时,它会一直加载错误的片段,有时甚至根本不加载一个!
不确定这是否相关但我在切换标签时收到此警告:
03-03 16:24:22.940 16967-16967/com.sampleapp.app W/FragmentManager: moveToState: Fragment state for BlankFragment3{efddbec #2 id=0x7f0c007b android:switcher:2131492987:2} not updated inline; expected state 3 found 2
我正在使用构建工具版本23.0.2和以下依赖项:
compile 'com.android.support:appcompat-v7:23.1.1'
compile 'com.android.support:design:23.1.1'
compile 'com.android.support:support-v4:23.1.1'
Run Code Online (Sandbox Code Playgroud)
这是我的主导航栏的布局代码:
<?xml version="1.0" encoding="utf-8"?>
Run Code Online (Sandbox Code Playgroud)
<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/toolbar1"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="?attr/colorPrimary"
app:popupTheme="@style/AppTheme.PopupOverlay" />
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar2"
android:layout_width="match_parent"
android:layout_height="10dp"
android:background="?attr/colorPrimary"
app:layout_scrollFlags="scroll|enterAlways"
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"
app:tabMode="fixed"
app:tabGravity="fill"/>
</android.support.design.widget.AppBarLayout>
<android.support.v4.view.ViewPager
android:id="@+id/viewpager"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior" />
<android.support.design.widget.FloatingActionButton
android:id="@+id/fab"
android:layout_width="wrap_content" …Run Code Online (Sandbox Code Playgroud) android android-layout android-fragments android-viewpager android-tablayout
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
Log.v(TAG, "onCreateView");
View rootView = inflater.inflate(R.layout.fragment_home, container, false);
// setting up the view pager and tab layout
mViewPager = (ViewPager) rootView.findViewById(R.id.view_pager);
mTabLayout = (TabLayout) rootView.findViewById(R.id.tab_layout);
PageAdapter adapter = new PageAdapter(getFragmentManager());
mViewPager.setAdapter(adapter);
mTabLayout.setupWithViewPager(mViewPager);
mViewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(mTabLayout));
return rootView;
}
Run Code Online (Sandbox Code Playgroud)
我的自定义寻呼机适配器如下所示:
public class PageAdapter extends FragmentStatePagerAdapter {
public PageAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
return new GroupTabFragment(position);
}
@Override
public CharSequence getPageTitle(int position) {
String title = …Run Code Online (Sandbox Code Playgroud) java android android-fragments android-viewpager android-tablayout
我的屏幕上有7个日期标签,选中标签后,文字为黑色; 而其他可选标签的颜色为白色.如果日期是另一个月,我希望文本颜色为灰色.
我假设第一个选项卡是0,第二个选项卡是1,并一直持续到6.如图所示,我想更改选项卡(3),选项卡(4),选项卡(5)和选项卡(6)的文本颜色.当它满足所需条件(而不是xml)时,如何以编程方式完成,将这4个选项卡中的文本颜色设置为灰色?
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:paddingTop="8dp"
android:paddingBottom="8dp"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin">
<TextView
android:id="@+id/lblWeekMsg"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/week"
android:textAppearance="?attr/textAppearanceListItem" />
<TextView
android:id="@+id/lblWeekNo"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toEndOf="@id/lblWeekMsg"
android:layout_alignBaseline="@id/lblWeekMsg"
android:text=""
android:textAppearance="?attr/textAppearanceListItem" />
</RelativeLayout>
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/coordinator_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="30">
<android.support.design.widget.AppBarLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/app_bar_layout">
<android.support.design.widget.TabLayout
android:id="@+id/tab_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:tabTextColor="@android:color/white"
app:tabMode="scrollable"
app:tabGravity="fill" />
</android.support.design.widget.AppBarLayout>
<android.support.v4.view.ViewPager
android:id="@+id/view_pager"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_behavior="@string/appbar_scrolling_view_behavior" />
</android.support.design.widget.CoordinatorLayout>
Run Code Online (Sandbox Code Playgroud)
我用这种方式用片段创建标签
public void setupViewPager(ViewPager viewPager, ArrayList<String> id, ArrayList<String> tasks,
ArrayList<Double> mondayHours, ArrayList<Double> tuesdayHours,
ArrayList<Double> wednesdayHours, ArrayList<Double> thursdayHours,
ArrayList<Double> fridayHours, ArrayList<Double> saturdayHours,
ArrayList<Double> sundayHours) {
Bundle …Run Code Online (Sandbox Code Playgroud) 我已经为我的应用程序开发了选项卡布局,它在所有版本的 android 中都可以正常工作。但是当我添加用于显示来自 DB 的图像的片段时,Lollipop 及更高版本的问题就开始了。滑动后标签标题被删除。(如屏幕截图所示。)
android kitkat 上的屏幕
但在 android 棒棒糖上滑动选项卡后,相同的屏幕发生了变化
在一个标签上它完全消失了
我的代码用于添加 tablayout 是...
代码
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 …Run Code Online (Sandbox Code Playgroud) android android-viewpager android-coordinatorlayout android-tablayout
在recyclerview中单击某个项目时,我会调用它
appbar.removeView(tabs)
该视频显示了会发生什么
它似乎完全删除TabLayout没有动画,然后将其添加回来,然后使用动画删除它.我放慢了转变速度,以显示它的作用.
当像这样添加它们时也会发生这种情况
if (tabs.parent != null) {
(tabs.parent as ViewGroup).removeView(tabs)
}
appbar.addView(tabs)
appbar.setExpanded(true, true)
Run Code Online (Sandbox Code Playgroud)
这是我的布局
<android.support.design.widget.CoordinatorLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/coordinator_main_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:theme="@style/Theme.AppCompat.Light.NoActionBar">
<android.support.design.widget.AppBarLayout
android:id="@+id/appbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:animateLayoutChanges="true"
app:elevation="0dp"
android:theme="@style/ThemeOverlay.AppCompat.ActionBar">
<android.support.v7.widget.Toolbar
xmlns:android="http://schemas.android.com/apk/res/android"
style="@style/MyToolbar"
android:id="@+id/toolbar"
android:layout_height="wrap_content"
android:layout_width="match_parent"
app:layout_scrollFlags="scroll|enterAlways|snap"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light"/>
<android.support.design.widget.TabLayout
android:id="@+id/tabs"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:tabTextAppearance="@style/TabText"
android:layout_marginRight="@dimen/small_spacing"
android:layout_marginLeft="@dimen/small_spacing"
app:tabMode="fixed"
app:tabGravity="fill"
app:tabIndicatorHeight="2dp"
app:layout_scrollFlags="enterAlways"/>
</android.support.design.widget.AppBarLayout>
<FrameLayout
android:id="@+id/content"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@+id/appbar"
app:layout_behavior="@string/appbar_scrolling_view_behavior" >
<***.***.CustomViewPager
android:id="@+id/viewpager"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</FrameLayout>
</android.support.design.widget.CoordinatorLayout>
Run Code Online (Sandbox Code Playgroud) 我有一个ViewPager带addOnPageChangeListener.ViewPager有3个选项卡视图(tab1,tab2,tab3).当用户单击tab2时,它会加载一些数据(基本上是a RecyclerView).此时,如果用户再次单击tab2,我需要重新加载数据,但在这种情况下addOnPageChangeListener不会触发.
我的代码:
customPagerAdapter = new CustomPagerAdapter(getSupportFragmentManager(), MainActivity.this);
viewPager.setAdapter(customPagerAdapter);
viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
public void onPageScrollStateChanged(int state) {
}
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
public void onPageSelected(int position) {
Log.i("TAG", "position: " + position);
switch (position) {
case 0:
addingMarker(LocationData.find(LocationData.class, "Category = ? ", "1"));
break;
case 1:
addingMarker(LocationData.find(LocationData.class, "Category = ? ", "2"));
break;
case 2:
addingMarker(LocationData.find(LocationData.class, "Category = ? ", "3"));
break;
}
}
}); …Run Code Online (Sandbox Code Playgroud) 我有一个tablayout,其中我包含了五个片段,但当我转到任何其他选项卡时,片段XML(布局)未显示,而是仅显示黑屏.我包含我的标签活动代码和应用程序的屏幕截图,以及一个带有XML的片段的参考.
TABS_ACTIVITY
public class Bottom_Tabs_Activity extends AppCompatActivity {
private TabLayout tabLayout;
private ViewPager viewPager;
private int[] tabIcons = {
R.drawable.ic_friends,
R.drawable.ic_chat,
R.drawable.ic_map,
R.drawable.ic_status,
R.drawable.ic_profile
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.tabs);
viewPager = (ViewPager) findViewById(R.id.viewpager);
if (viewPager != null)
setupViewPager(viewPager);
else {
Log.e("test", "i am null");
}
tabLayout = (TabLayout) findViewById(R.id.tabs);
tabLayout.setupWithViewPager(viewPager);
setupTabIcons();
}
private void setupTabIcons() {
tabLayout.getTabAt(0).setIcon(tabIcons[0]);
tabLayout.getTabAt(1).setIcon(tabIcons[1]);
tabLayout.getTabAt(2).setIcon(tabIcons[2]);
tabLayout.getTabAt(3).setIcon(tabIcons[3]);
tabLayout.getTabAt(4).setIcon(tabIcons[4]);
}
private void setupViewPager(ViewPager viewPager)
{
ViewPagerAdapter adapter = new ViewPagerAdapter(getSupportFragmentManager());
adapter.addFrag(new MapFragment(),"MAPS");
adapter.addFrag(new PeopleFragment(),"PEOPLE"); …Run Code Online (Sandbox Code Playgroud) <include
android:id="@+id/tool_bar"
layout="@layout/toolbar"/>
<android.support.design.widget.TabLayout
android:id="@+id/tabs"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/PrimaryColor"
android:layout_below="@+id/tool_bar"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true" />
<android.support.v4.view.ViewPager
android:id="@+id/viewpager"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/tabs"
/>
Run Code Online (Sandbox Code Playgroud)
滑动选项卡在选项卡滑动时工作正常,但它不适用于选项卡单击.Tab lick不会将您刷到相关的标签内容.下面是MainActivity.java,我正在使用viewpager和SlidingTabLayout:
public class MainActivity extends AppCompatActivity implements View.OnClickListener{
//Declaring All The Variables Needed
private Toolbar toolbar;
private TabLayout tabLayout;
private ViewPager viewPager;
private ViewPagerAdapter viewPagerAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
/*
Assigning view variables to their respective view in xml
by findViewByID method
*/
toolbar = (Toolbar) findViewById(R.id.tool_bar);
tabLayout = (TabLayout) findViewById(R.id.tabs);
viewPager = (ViewPager) findViewById(R.id.viewpager);
/*
Creating …Run Code Online (Sandbox Code Playgroud) 我的应用程序中有一个TabLayout,它包含自定义视图:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:orientation="horizontal">
<com.myproject.app.utils.commons.IconImageView
android:id="@android:id/icon"
android:layout_width="wrap_content"
android:layout_height="20dp"
android:layout_marginRight="14dp"
android:layout_marginEnd="14dp"
app:iconStateListColor="@color/color_order_tab"/>
<TextView
android:id="@android:id/text1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/color_order_tab"
android:textSize="14sp"
android:fontFamily="sans-serif-medium"/>
</LinearLayout>
</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)
我只想在选项卡上显示文本(已完成)并动态调整这些选项卡的大小,是否有任何方法可以这样做?如果使用app:tabMode="fixed"选项卡,请不要调整大小,如果使用选项卡,则app:tabMode="scrollable"选项卡始终位于屏幕左侧。如果我 android:layout_width="wrap_content"和android:layout_gravity="center_horizontal"- TabLayout没有填满屏幕。所以我需要: