我想在TabLayout中更改textview上的填充.我有一个名为Subcategories的标签.这是破线包装成两行.有没有办法做到这一点?
有关旧TabHost视图的答案,我正在使用Google的Material Design库使用的TabLayout,使用android.support.design.widget.TabLayout.
对于TabHost:如何将填充添加到选项卡标签?
是否可以使用多个活动而不是片段在应用程序中创建滑动的TabLayout?我有两个活动,我正在尝试创建一个使用可跳过的TabLayout的应用程序.我正在网上搜索但还找不到一个.如果可以构建,有人可以提供一些链接或教程吗?
android android-fragments android-activity android-tablayout
假设我有一个MainActivity类,其中TabLayoutand和ViewPager用相应的4页初始化。
MainActivity.class
public class MainActivity extends AppCompatActivity {
private SectionsPagerAdapter mSectionsPagerAdapter;
private ViewPager mViewPager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
mSectionsPagerAdapter = new SectionsPagerAdapter(getSupportFragmentManager());
// Set up the ViewPager with the sections adapter.
mViewPager = (ViewPager) findViewById(R.id.pager);
mViewPager.setAdapter(mSectionsPagerAdapter);
// TabLayout
TabLayout tabLayout = (TabLayout) findViewById(R.id.tab_layout);
tabLayout.setupWithViewPager(mViewPager);
}
public class SectionsPagerAdapter extends FragmentPagerAdapter {
public SectionsPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
// …Run Code Online (Sandbox Code Playgroud) 我已经实现了这个例子.
但无法点击第二个标签.
我的xml文件看起来像
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/header"
android:orientation="horizontal">
<android.support.design.widget.TabLayout
android:id="@+id/tab_layout"
android:layout_width="fill_parent"
android:layout_height="48dp"
android:layout_below="@+id/header"
android:background="@color/colorPrimary"
app:tabSelectedTextColor="#ffffff" />
<android.support.v4.view.ViewPager
android:id="@+id/view_pager"
android:layout_width="match_parent"
android:layout_marginTop="@dimen/padding"
android:layout_height="wrap_content"
android:layout_below="@id/tab_layout" />
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
和主要活动
pager= (ViewPager) findViewById(R.id.view_pager);
tabLayout= (TabLayout) findViewById(R.id.tab_layout);
FragmentManager manager=getSupportFragmentManager();
BuyCurrencyPagerAdapter adapter=new BuyCurrencyPagerAdapter(manager);
//set Adapter to view pager
pager.setAdapter(adapter);
tabLayout.setupWithViewPager(pager);
pager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tabLayout));
tabLayout.setTabsFromPagerAdapter(adapter);
Run Code Online (Sandbox Code Playgroud)
请提出任何建议.
我需要为我正在开发的应用程序选项卡.所以我最终得到了tablayout,它包含很少的标签.代码如下:
private void setupNavTab() {
int[][] states = new int[][]{
new int[]{android.R.attr.state_selected},
new int[]{-android.R.attr.state_selected},
new int[]{-android.R.attr.state_enabled}
};
int[] colors = new int[]{
ContextCompat.getColor(getActivity(), R.color.cricut_selected_green),
ContextCompat.getColor(getActivity(), R.color.nav_bar_unselected_content),
ContextCompat.getColor(getActivity(), R.color.edit_button_text_color_inactive)
};
ColorStateList cslist = new ColorStateList(states, colors);
if (tabs != null) {
tabs.removeAllTabs();
tabs.setTabTextColors(cslist);
firstTab = tabs.newTab().setTag(TAB_FIRST);
View customFirstTabView = LayoutInflater.from(getActivity()).inflate(R.layout.tab_item_layout, null, false);
firstTabView = (TextView) customFirstTabView.findViewById(R.id.textContainer);
firstTabView.setText(R.string.first);
firstTabView.setTextColor(cslist);
firstTab.setCustomView(customFirstTabView);
secondTab = tabs.newTab().setTag(TAB_SECOND);
View customSecondView = LayoutInflater.from(getActivity()).inflate(R.layout.tab_item_layout, null, false);
secondTabView = (TextView) customSecondView.findViewById(R.id.textContainer);
secondTabView.setText(R.string.second);
secondTabView.setTextColor(cslist);
secondTab.setCustomView(customSecondView);
thirdTab = tabs.newTab().setTag(TAB_THIRD);
View customThirdTabView
= …Run Code Online (Sandbox Code Playgroud) android.support.design.widget.TabLayout与ViewPager无法正常工作如果我设置了tabLayout.setupWithViewPager(viewPager); 然后tablayout视图没有显示请找到附加的屏幕截图.
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:fitsSystemWindows="false"
android:orientation="vertical"
tools:context=".home.HomeActivity"
tools:showIn="@layout/activity_home">
<android.support.design.widget.TabLayout
android:id="@+id/tab_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?attr/colorPrimary"
android:elevation="6dp"
android:minHeight="?attr/actionBarSize"
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"/>
<android.support.v4.view.ViewPager
android:id="@+id/pager"
android:layout_width="match_parent"
android:layout_height="fill_parent"
android:layout_below="@id/tab_layout"/>
Run Code Online (Sandbox Code Playgroud)
片段代码:
TabLayout tabLayout = (TabLayout) view.findViewById(R.id.tab_layout); tabLayout.addTab(tabLayout.newTab().setText(getActivity().getResources().getText(R.string.feeds))); tabLayout.addTab(tabLayout.newTab().setText(getActivity().getResources().getText(R.string.following))); tabLayout.addTab(tabLayout.newTab().setText(getActivity().getResources().getText(R.string.you)));
tabLayout.setTabGravity(TabLayout.GRAVITY_FILL);
final ViewPager viewPager = (ViewPager) view.findViewById(R.id.pager);
final PageAdapter adapter = new PageAdapter(getChildFragmentManager(), 3);
viewPager.setOffscreenPageLimit(3);
viewPager.setAdapter(adapter);
tabLayout.setupWithViewPager(viewPager);
Run Code Online (Sandbox Code Playgroud)
删除"tabLayout.setupWithViewPager(viewPager);"时 视图工作正常.但是我需要在单击相应选项卡时导航相应的片段.
在我的应用程序中,我正在使用tablayout.一切正常,但我想tablayout文本和指标线都应该相同的大小.
但左右指示器宽度占用额外空间.如何删除额外的空间或使其宽度相等.
需要的
谢谢
我在Android中有这个TabLayout,并希望使标签比默认值更高(48dp)
<android.support.design.widget.TabLayout
android:id="@+id/contentTabs"
android:layout_width="match_parent"
android:layout_height="wrap_content"
style="@style/Theme.Zhaw.TabLayout"
app:tabMode="fixed"
app:tabGravity="fill"/>
Run Code Online (Sandbox Code Playgroud)
这是Style Theme.Zhaw.TabLayout:
<style name="Theme.Zhaw.TabLayout" parent="Widget.Design.TabLayout">
<item name="tabIndicatorColor">@color/text_white</item>
<item name="tabIndicatorHeight">4dp</item>
<item name="tabPaddingStart">6dp</item>
<item name="tabPaddingEnd">6dp</item>
<item name="tabBackground">@color/colorPrimary</item>
<item name="tabTextAppearance">@style/Theme.Zhaw.TabLayoutText</item>
<item name="tabSelectedTextColor">@color/text_white</item>
</style>
Run Code Online (Sandbox Code Playgroud)
tabIndicatorHeight可以设置选项卡中小指示符(活动选项卡)的高度.但是我们如何设置标签本身的高度呢?
我想用两种不同的文字大小设置TabLayout的标题.如下图所示.或者反过来实现这一目标!
我尝试过使用SpannableString,如下所示.这个代码片段在for循环中直到5!
SpannableString mSpannableString= new SpannableString(s);
mSpannableString.setSpan(new RelativeSizeSpan(2f), 0,5, 0); // set size
mSpannableString.setSpan(new ForegroundColorSpan(Color.RED), 0, 5, 0);// set color
mTabLayout.getTabAt(i).setText(mSpannableString);
Run Code Online (Sandbox Code Playgroud)
但正如CommonaSware所提到的,setText()并没有采用丰富的内容!