标签: android-tabs

使用TabLayout时如何更改选项卡背景颜色?

这是我在主要活动中的代码

public class FilterActivity extends AppCompatActivity {

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

    // Get the ViewPager and set it's PagerAdapter so that it can display items
    ViewPager viewPager = (ViewPager) findViewById(R.id.viewpager);
    PageAdapter pageAdapter = new PageAdapter(getSupportFragmentManager(), FilterActivity.this);
    viewPager.setAdapter(pageAdapter);

    // Give the TabLayout the ViewPager
    final TabLayout tabLayout = (TabLayout) findViewById(R.id.sliding_tabs);
    tabLayout.setupWithViewPager(viewPager);



  }
}
Run Code Online (Sandbox Code Playgroud)

这是我在XML中的代码

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

    <include
        android:id="@+id/app_bar"
        layout="@layout/app_bar">
    </include>

    <android.support.design.widget.TabLayout
        android:id="@+id/sliding_tabs"
        android:layout_width="fill_parent"
        style="@style/MyCustomTabLayout"
        android:layout_height="48dp"/>

    <android.support.v4.view.ViewPager
        android:id="@+id/viewpager"
        android:layout_width="match_parent"
        android:layout_height="0px"
        android:layout_weight="1"
        android:background="@android:color/white" />

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

我想在选中时更改一个标签的背景颜色

android android-tabs android-tablayout

104
推荐指数
7
解决办法
10万
查看次数

TabWidget当前标签底线颜色

我有一个TabWidget我已启用并设置stripLeftstripRight...

mTabHost.getTabWidget().setStripEnabled(true);
mTabHost.getTabWidget().setRightStripDrawable(R.drawable.redline);
mTabHost.getTabWidget().setLeftStripDrawable(R.drawable.redline);
Run Code Online (Sandbox Code Playgroud)

如下图所示,这不会更改当前所选选项卡(TAB 2)的底线颜色.

在此输入图像描述

如何更改当前所选选项卡的底线颜色,默认为蓝色?(我猜测蓝色是在默认AppTheme样式中设置的styles.xml.)

我看了这个答案,但没有说明如何改变颜色......

android android-tabs

62
推荐指数
6
解决办法
8万
查看次数

Tablayout仅带有图标

我正在使用设计支持来创建标签.我也ViewPager用于可跳转标签.

现在,我不知道如何在标签中仅使用图标而不是文本.我试图找出但没有取得任何成功.

我的代码:

Toolbar toolbar;
private TabLayout tabLayout;
private ViewPager viewPager;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    viewPager = (ViewPager) findViewById(R.id.pager);
    setupViewPager(viewPager);
    setupTablayout();
}

private void setupTablayout() {
    tabLayout = (TabLayout) findViewById(R.id.tabLayout);
    tabLayout.setTabGravity(TabLayout.GRAVITY_FILL);
    tabLayout.setupWithViewPager(viewPager);
}

class MyPagerAdapter extends FragmentPagerAdapter {

    private final List<Fragment> mFragmentList = new ArrayList<>();
    private final List<String> mFragmentTitleList = new ArrayList<>();

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

    @Override
    public Fragment getItem(int position) {
        return mFragmentList.get(position);
    }

    @Override
    public int getCount() {
        return mFragmentList.size(); …
Run Code Online (Sandbox Code Playgroud)

android android-tabs android-tablayout

59
推荐指数
8
解决办法
8万
查看次数

如何设计冰淇淋三明治标签之间的分隔线?

我正在使用以下样式和一组九个补丁图像在一些Ice Cream Sandwich选项卡的底部创建一条红线,而不是标准的蓝线:

<style name="customTabStyle" parent="@android:style/Widget.Holo.ActionBar.TabBar">
    <item name="android:tabStripLeft">@null</item>
    <item name="android:tabStripRight">@null</item>
    <item name="android:tabStripEnabled">false</item>
    <item name="android:showDividers">none</item>
    <item name="android:measureWithLargestChild">true</item>
    <item name="android:background">@drawable/tab_line</item>
    <item name="android:gravity">center</item>
</style>

<style name="customTabBar" parent="@android:style/Widget.Holo">
    <item name="android:showDividers">middle</item>
    <item name="android:divider">@drawable/divider2</item>
    <item name="android:dividerPadding">0dp</item>
</style>

<style name="LightThemeSelector" parent="android:Theme.Holo.Light">
    <item name="android:actionBarTabStyle">@style/customTabStyle</item>
    <item name="android:actionBarTabBarStyle">@style/customTabBar</item>
</style>
Run Code Online (Sandbox Code Playgroud)

显示红线,除了标签之间的分隔线外,每条线看起来都很好.正如您在图像中的绿色框内看到的那样,线条未在分隔线下方绘制.如何为此分隔符选择可绘制或样式?

android:dividerandroid:showDividers物品不负责标签之间的分隔符.它们仅选择在选项卡图标和选项卡标题之间绘制的分隔符.我隐藏了那些分隔线因为没有标题而分隔线看起来很奇怪.

结果标签栏的屏幕截图


更新在Aneal的回答中,我添加了第二个样式customTabBar.样式选择drawable作为分隔符.分隔线是使用以下9patch drawable创建的纯黑线:

9patch drawable创建分隔符

使用此drawable绘制分隔符,但旁边还有一个空行:

带分隔线的标签栏

android android-tabs

45
推荐指数
5
解决办法
4万
查看次数

android 5.0材质设计标签

与最新的Google NewsStand应用程序一样,实现材料设计风格选项卡的最佳和最简单的方法是什么?这正是我正在寻找的,但不知道从哪里开始.非常感谢提供的任何帮助/方向.谢谢.

android android-tabs android-5.0-lollipop

45
推荐指数
2
解决办法
4万
查看次数

为Fragment/ViewPager设置设置默认选项卡

首次创建FragmentActivity时如何设置默认选项卡?我有5个标签,并希望它打开到标签2,而不是1.它似乎应该比它更容易!

@Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.fragment_layout);

        mSectionsPagerAdapter = new SectionsPagerAdapter(
                getSupportFragmentManager());

        final ActionBar actionBar = getActionBar();
        actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);

        mViewPager = (ViewPager) findViewById(R.id.viewpager);
        mViewPager.setAdapter(mSectionsPagerAdapter);

        mViewPager
                .setOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() {
                    @Override
                    public void onPageSelected(int position) {
                        actionBar.setSelectedNavigationItem(position);

                    }
                });

        for (int i = 0; i < mSectionsPagerAdapter.getCount(); i++) {
            actionBar.addTab(actionBar.newTab()
                    .setText(mSectionsPagerAdapter.getPageTitle(i))
                    .setTabListener(this));
        }


    }

    public void onTabUnselected(ActionBar.Tab tab,
            FragmentTransaction fragmentTransaction) {

    }

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

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

    }

    public void onTabSelected(ActionBar.Tab …
Run Code Online (Sandbox Code Playgroud)

android android-fragments android-tabs

37
推荐指数
1
解决办法
4万
查看次数

禁用在选项卡之间滑动

我设置了两个Fragments的滑动标签,每个标签Fragment都有Button一个WebView.这样做的问题是,当WebView Button单击滑动选项卡仍然激活时,当用户尝试在您内导航时,WebView最终会滑动到另一个选项卡.在点击方法中是否有一种方法可以禁用选项卡的滑动功能?任何帮助将非常感谢!

这里的代码:

public class MyWebViewClass extends Fragment {

private WebView mWebView;
private Button mButton;

public MyWebViewClass() {
    // Required empty public constructor
}


@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    // Inflate the layout for this fragment
    View view = inflater.inflate(R.layout.fragment_webview, container, false);

    mWebView = (WebView) view.findViewById(R.id.WebView);

    mButton = (Button) view.findViewById(R.id.Button1);
    mButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            mWebView.setVisibility(View.VISIBLE);
            mButton.setVisibility(View.GONE);
            mWebView.getSettings().setJavaScriptEnabled(true);
            mWebView.loadUrl("www.google.com"); …
Run Code Online (Sandbox Code Playgroud)

android android-fragments android-tabs

37
推荐指数
2
解决办法
3万
查看次数

在Android中添加片段内的片段?

我想在片段中添加一个TabHost.代码如下.这里面是碎片.我正在尝试添加TabHost以显示两个选项卡:

package com.nordicsoft.dilosysNewVersion;

import android.app.Fragment;
import android.content.Intent;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TabHost;

public class Fragment_Coupons extends Fragment {
    TabHost tabHost;
    TabHost.TabSpec spec;

    public Fragment_Coupons() {
    }

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

        View rootView = inflater.inflate(R.layout.fragment_coupon, container,
                false);
        tabHost = (TabHost) rootView.findViewById(android.R.id.tabhost);
        tabHost.setup();
        //Add_Text_To_Tab("Android", "IOS");

        Intent intentAndroid = new Intent().setClass(getActivity(),
                Aclass.class);
        spec = tabHost.newTabSpec("Android").setContent(intentAndroid)
                .setIndicator("Android");

        tabHost.addTab(spec);

        Intent intentBus = new Intent().setClass(getActivity(), Bclass.class);
        spec = tabHost.newTabSpec("Welcome").setIndicator("Welcome")
                .setContent(intentBus).setIndicator("Welcome");
        tabHost.addTab(spec);
        return rootView;
    }

} …
Run Code Online (Sandbox Code Playgroud)

android fragment android-tabs

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

如何使用Android中的代码中的TabLayout更改选定的选项卡文本颜色?

在此输入图像描述

我正在使用android.support.widget.TabLayoutTab视图,我想从代码(而不是从xml或通过样式)更改选定的选项卡文本颜色.我怎样才能做到这一点 ?

android android-tabs android-tablayout

34
推荐指数
5
解决办法
6万
查看次数

恢复时不恢复ViewPager中的片段视图

我有ActionBar Tabs设置.它由4个标签组成.一切都很好,直到我离开TabbedFragment并返回.

我创建这样的标签:

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

        final ActionBar actionBar = getActionBar();

        tabs = Lists.newArrayList();
        tabs.add(new TabDefinition<>("Tab 1"));
        tabs.add(new TabDefinition<>("Tab 2"));
        tabs.add(new TabDefinition<>("Tab 3"));
        tabs.add(new TabDefinition<>("Tab 4"));


        for (TabDefinition tab : tabs) {
            actionBar.addTab(actionBar.newTab()
                .setText(tab.text)
                .setTag(tab.tag)
                .setTabListener(this));
        }
    }
Run Code Online (Sandbox Code Playgroud)

并初始化适配器,如下所示:

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    return inflater.inflate(R.layout.paging_tab_container, container, false);
}

@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
    super.onViewCreated(view, savedInstanceState);
    viewPager = (ViewPager) view.findViewById(R.id.pager);

    viewPager.setAdapter(new FragmentStatePagerAdapter(getFragmentManager()) {

        @Override
        public Fragment …
Run Code Online (Sandbox Code Playgroud)

android android-fragments android-tabs

32
推荐指数
1
解决办法
2万
查看次数