我已经阅读了很多示例,问题和教程,但我从未见过具有特定选项卡的活动启动(启动新意图).我知道可以使用.setCurrentTab切换到选项卡,但这只能从父活动选项卡内部完成.如何从不同的活动中启动一个活动中包含的特定选项卡?可能吗?如果是这样,那怎么样?
在我的代码中,在标准活动启动用户显示第一个选项卡,但我希望他转到第四个选项卡,以防他从另一个活动重定向.我的TabHost代码(MyTabActivity):
int tabIndex = 0;
mTabHost.addTab(mTabHost.newTabSpec("top10").setIndicator("Top 10").setContent(R.id.Top_10));
mTabHost.addTab(mTabHost.newTabSpec("billable").setIndicator("Billable").setContent(R.id.Billable));
mTabHost.addTab(mTabHost.newTabSpec("product").setIndicator("Product").setContent(R.id.Product));
mTabHost.addTab(mTabHost.newTabSpec("regular").setIndicator("Regular").setContent(R.id.General));
mTabHost.setCurrentTab(tabIndex);
Run Code Online (Sandbox Code Playgroud)
现在进行另一项活动:
public void gotoTab() {
//This will take me to the first tab
Intent i = new Intent(this, MyTabActivity.class);
startActivity(i);
finish();
//How to I make it take me to the fourth tab?
}
Run Code Online (Sandbox Code Playgroud) 我一直在标签栏中遇到文字大小的问题。下面是图片,

这是我的代码,
public class MainActivity extends Activity implements OnTabChangeListener, OnPageChangeListener{
private TabHost tabHost;
private ViewPager pager;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tabHost = (TabHost)findViewById(android.R.id.tabhost);
pager = (ViewPager) findViewById(R.id.pager);
tabHost.setup();
TabWidget tabwidget=tabHost.getTabWidget();
TabSpec spec = tabHost.newTabSpec("tab1");
spec.setContent(R.id.tab1);
spec.setIndicator("Check In");
tabHost.addTab(spec);
spec = tabHost.newTabSpec("tab2");
spec.setContent(R.id.tab2);
spec.setIndicator("Buddies");
tabHost.addTab(spec);
spec = tabHost.newTabSpec("tab3");
spec.setContent(R.id.tab3);
spec.setIndicator("Recommendation");
tabHost.addTab(spec);
spec = tabHost.newTabSpec("tab4");
spec.setContent(R.id.tab4);
spec.setIndicator("Feed");
tabHost.addTab(spec);
spec = tabHost.newTabSpec("tab5");
spec.setContent(R.id.tab5);
spec.setIndicator("Last");
tabHost.addTab(spec);
pager.setAdapter(new MyPagerAdapter(this));
pager.setOnPageChangeListener(this);
tabHost.setOnTabChangedListener(this);
}
@Override
public void onTabChanged(String tabId){
int pageNumber = …Run Code Online (Sandbox Code Playgroud) FragmentTabHost 在其通常的配置中足够有礼貌地为我们处理片段的实例化,这意味着我们只需要传入类中,并完成剩下的工作:
mTabHost.setup(this, getSupportFragmentManager(), R.id.realtabcontent);
mTabHost.addTab(mTabHost.newTabSpec("friends").setIndicator("Friends"), FriendsFragment.class, null);
mTabHost.addTab(mTabHost.newTabSpec("contacts").setIndicator("Contacts"), ContactsFragment.class, null);
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,我们只需要传递Fragment类(例如FriendsFragment.class)和传递的args包(在本例中null)并且FragmentTabHost将为我们处理片段的初始化.它似乎也很懒惰,只会在实际更改选项卡时加载片段.
这在很多情况下都很棒,但我想要做的是手动预先创建我的片段,然后将它们附加到FragmentTabHost之后.这样做的主要优点是我可以确保所有选项卡片段始终存在,而不是在用户更改选项卡时懒惰地创建.
理想情况下,我想拥有的是这样的东西(如果只存在方法!):
FriendsFragment f1 = new FriendsFragment();
ContactsFragment f2 = new ContactsFragment();
mTabHost.setup(this, getSupportFragmentManager(), R.id.realtabcontent);
mTabHost.addTab(mTabHost.newTabSpec("friends").setIndicator("Friends"), f1);
mTabHost.addTab(mTabHost.newTabSpec("contacts").setIndicator("Contacts"), f2);
Run Code Online (Sandbox Code Playgroud)
所以问题是:是否可以手动预先创建片段,FragmentTabHost或者是否有必要完全采用不同的方法?
任何人都知道如何在API 21/AppCompat工具栏中完成选项卡?
我发现的很多材料和文章都很旧.他们使用ActionBar的旧方法现在不起作用.此刻我刚刚创建了工具栏,并且没有关于工具栏标签的想法.那么,任何人都可以提供有关如何使用viewpager创建工具栏选项卡的示例或文章吗?
android android-viewpager android-tabs material-design android-toolbar
我有一个简单的东西AppCompatActivity,一个简单的东西Toolbar(android.support.v7.widget.Toolbar),一个设计库TabLayout和一个ViewPager。
现在,在这种情况下,我有4个片段,它们位于viewpager内部,可以从侧面滑动。很好 但是,一旦我使用mTabLayout.setupWithViewPager(mViewPager);,图标就会消失,但是我可以在空白处进行切换,效果很好。如果我删除该行,图标将再次可见,“滑动”将起作用,但是如果我使用Tab键选择图标,则不会发生任何事情。
我的密码
主要活动
public class MainActivity extends AppCompatActivity {
private Toolbar mToolbar;
private TabLayout mTabLayout;
private ViewPager mViewPager;
private ViewPagerAdapter mAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initToolbar();
initTabLayout();
initViewPager();
mTabLayout.setupWithViewPager(mViewPager);//Here is the code from above
mViewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(mTabLayout));
}
private void initToolbar() {
mToolbar = (Toolbar) findViewById(R.id.app_bar);
setSupportActionBar(mToolbar);
getSupportActionBar().setDisplayHomeAsUpEnabled(false);
}
private void initTabLayout() {
mTabLayout = (TabLayout) findViewById(R.id.tabLayout);
mTabLayout.addTab(mTabLayout.newTab().setIcon(R.drawable.ic_fire_white));
mTabLayout.addTab(mTabLayout.newTab().setIcon(R.drawable.ic_apps_white));
mTabLayout.addTab(mTabLayout.newTab().setIcon(R.drawable.ic_account_plus_white));
mTabLayout.addTab(mTabLayout.newTab().setIcon(R.drawable.ic_help_white));
}
private void initViewPager() …Run Code Online (Sandbox Code Playgroud) 我制作了一个 tablayout 选项卡,它具有选项卡的自定义布局,有时我希望更改这些选项卡的标题。但我没有得到正确的方法,请帮助我。
我的custom_tab.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/titttle"
android:textStyle="bold"
android:text="MYTITLE"
android:paddingLeft="10dp"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/count"
android:textStyle="bold"
android:text="1"
android:paddingLeft="10dp"/>
</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)
并在MainActivity.java 中
tabLayout = (TabLayout) findViewById(R.id.tabs);
tabLayout.setupWithViewPager(viewPager);
tabLayout.getTabAt(0).setCustomView(R.layout.tab_custom_view);
tabLayout.getTabAt(1).setCustomView(R.layout.tab_custom_view);
TextView textView = (TextView)tabLayout.getChildAt(1).getRootView().findViewById(R.id.titttle);
textView.setText("New Title");
Run Code Online (Sandbox Code Playgroud)
这里
TextView textView = (TextView)tabLayout.getChildAt(1).getRootView().findViewById(R.id.titttle);
textView.setText("New Title");
Run Code Online (Sandbox Code Playgroud)
不工作,帮我更新自定义选项卡的文本视图。
android-fragments android-activity android-tablelayout android-tabs android-design-library
我正在尝试在底部实现自定义选项卡UI,就像Instagram一样(截图已附上).我希望中间选项卡打开另一个活动,而不是在同一视图中打开一个片段.

我觉得这是使用选项卡主机上的imagebutton overlay实现的.但是,我仍然无法正确放置该图像按钮,因此UI看起来很合适.下面是我底部标签的代码
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<FrameLayout
android:id="@+id/realtabcontent"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1" />
<android.support.v4.app.FragmentTabHost
android:id="@android:id/tabhost"
android:layout_width="match_parent"
android:layout_height="wrap_content" >
<FrameLayout
android:id="@android:id/tabcontent"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_weight="0" />
</android.support.v4.app.FragmentTabHost>
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
请帮助.
谢谢,
我有Navigation Drawer一个片段Tab Viewer.在tabviewer中,我正在使用ViewPager它Fragment.代码ViewPager是
viewPager = (ViewPager) rootView.findViewById(R.id.pager);
viewPager.setAdapter(new TabsPagerAdapter(((FragmentActivity)getActivity()).getSupportFragmentManager()));
PagerSlidingTabStrip tabsStrip = (PagerSlidingTabStrip) rootView.findViewById(R.id.tabs);
tabsStrip.setViewPager(viewPager);
Run Code Online (Sandbox Code Playgroud)
选项卡将在导航抽屉中首次点击其内容,但第二次只有标签的标题没有其布局.布局不会到来,并且不同选项卡之间的滑动也不起作用?为什么它第一次工作而不是其余工作?我附加了两个不同点击相同导航抽屉片段的图像.这是第一次点击,所以布局完美.

这是第二次尝试点击相同的片段,但只有背景,没有任何布局内容.
帮助摆脱这个问题.
我正在尝试使用选项卡和pagerview进行活动,我在博客中找到了此代码,但它并不像使选项卡具有图标而不是文本...我将代码放在:
ViewPagerAdapter.java
class ViewPagerAdapter extends FragmentPagerAdapter {
private final List<Fragment> mFragmentList = new ArrayList<>();
private final List<String> mFragmentTitleList = new ArrayList<>();
public ViewPagerAdapter(FragmentManager manager) {
super(manager);
}
@Override
public Fragment getItem(int position) {
return mFragmentList.get(position);
}
@Override
public int getCount() {
return mFragmentList.size();
}
public void addFrag(Fragment fragment, String title) {
mFragmentList.add(fragment);
mFragmentTitleList.add(title);
}
@Override
public CharSequence getPageTitle(int position) {
return mFragmentTitleList.get(position);
}
}
Run Code Online (Sandbox Code Playgroud)
Tablayout_in_Android.java
public class Tablayout_in_Android extends Fragment {
public Tablayout_in_Android() {
// Required empty public constructor
} …Run Code Online (Sandbox Code Playgroud)