这是我在主要活动中的代码
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)
我想在选中时更改一个标签的背景颜色
我有一个TabWidget我已启用并设置stripLeft
和stripRight
...
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
.)
我看了这个答案,但没有说明如何改变颜色......
我正在使用设计支持来创建标签.我也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) 我正在使用以下样式和一组九个补丁图像在一些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:divider
和android:showDividers
物品不负责标签之间的分隔符.它们仅选择在选项卡图标和选项卡标题之间绘制的分隔符.我隐藏了那些分隔线因为没有标题而分隔线看起来很奇怪.
更新在Aneal的回答中,我添加了第二个样式customTabBar.样式选择drawable作为分隔符.分隔线是使用以下9patch drawable创建的纯黑线:
使用此drawable绘制分隔符,但旁边还有一个空行:
与最新的Google NewsStand应用程序一样,实现材料设计风格选项卡的最佳和最简单的方法是什么?这正是我正在寻找的,但不知道从哪里开始.非常感谢提供的任何帮助/方向.谢谢.
首次创建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) 我设置了两个Fragment
s的滑动标签,每个标签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) 我想在片段中添加一个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.support.widget.TabLayout
Tab视图,我想从代码(而不是从xml或通过样式)更改选定的选项卡文本颜色.我怎样才能做到这一点 ?
我有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)