Android的动作条选项卡 - 刷卡 [英] Android ActionBar Tabs - Swipe
本文介绍了Android的动作条选项卡 - 刷卡的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
这将是很好,如果我可以在标签我曾在我的动作条的刷卡。
我已经按照这些教程: http://developer.android.com /training/implementing-navigation/lateral.html 但它不会工作。 :(我不能与标签之间的手势滑动。
下面是我的主要活动:
公共类Hauptmenue_extended扩展ActionBarActivity工具
android.content.DialogInterface.OnClickListener {
@覆盖
保护无效的onCreate(包savedInstanceState){
super.onCreate(savedInstanceState);
的setContentView(R.layout.activity_hauptmenue_extended);
尝试 {
mPullToRefreshAttacher = PullToRefreshAttacher.get(本);
动作条= getSupportActionBar();
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
actionBar.setDisplayHomeAsUpEnabled(真正的);
actionBar.setHomeButtonEnabled(真正的);
mAdapter =新TabsPagerAdapter(getSupportFragmentManager());
mViewPager =(ViewPager)findViewById(R.id.pager);
mViewPager.setAdapter(mAdapter);
标签塔布= actionBar.newTab();
tabB.setText(家);
tabB.setIcon(R.drawable.icon_home);
tabB.setTabListener(新TabListener< Startmenue_activity>(这一点,
开始,Startmenue_activity.class,this.mViewPager));
actionBar.addTab(塔布);
标签塔巴= actionBar.newTab();
tabA.setText();
tabA.setIcon(R.drawable.icon_nachrichten_sel);
tabA.setTabListener(新TabListener< Nachrichten_activity>(这一点,
新闻报,Nachrichten_activity.class,this.mViewPager));
actionBar.addTab(塔巴);
标签TABC = actionBar.newTab();
tabC.setText();
tabC.setIcon(R.drawable.icon_favoriten);
tabC.setTabListener(新TabListener< Favoriten_activity>(这一点,
法沃里滕,Favoriten_activity.class,this.mViewPager));
actionBar.addTab(TABC);
this.conEinst =新conEinstellungen(getBaseContext());
}赶上(例外前){
ex.printStackTrace();
// HelperClassAlertDialog.zeigeInfoDialog(这一点,错误......
}
}
公共类TabsPagerAdapter扩展FragmentPagerAdapter {
公共TabsPagerAdapter(FragmentManager FM){
超(FM);
}
公共片段的getItem(INT指数){
开关(指数){
情况下0:
//最高评分片段活动
返回新Startmenue_activity();
情况1:
//游戏片段活动
返回新Nachrichten_activity();
案例2:
//电影片段活动
返回新Favoriten_activity();
}
返回null;
}
公众诠释getCount将(){
//获取项目计数 - 等于标签数
返回3;
}
}
这是XML:
< android.support.v4.view.ViewPager 的xmlns:机器人=http://schemas.android.com/apk/res/android 机器人:ID =@ + ID /寻呼机 机器人:layout_width =match_parent 机器人:layout_height =match_parent> < android.support.v4.view.PagerTabStrip 机器人:ID =@ + ID /标签 机器人:layout_width =match_parent 机器人:layout_height =WRAP_CONTENT 机器人:layout_gravity =顶/> < /android.support.v4.view.ViewPager>
解决方案
这完美的作品,你会选项卡之间刷卡:
MainActivity
:
公共类MainActivity扩展FragmentActivity工具
ActionBar.TabListener {
CollectionPagerAdapter mCollectionPagerAdapter;
ViewPager mViewPager;
公共无效的onCreate(包savedInstanceState){
super.onCreate(savedInstanceState);
的setContentView(R.layout.activity_main);
mCollectionPagerAdapter =新CollectionPagerAdapter(
getSupportFragmentManager());
最后的动作条动作条= getActionBar();
actionBar.setHomeButtonEnabled(假);
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
mViewPager =(ViewPager)findViewById(R.id.pager);
mViewPager.setAdapter(mCollectionPagerAdapter);
mViewPager
.setOnPageChangeListener(新ViewPager.SimpleOnPageChangeListener(){
@覆盖
公共无效onPageSelected(INT位置){
actionBar.setSelectedNavigationItem(位置);
}
});
的for(int i = 0; I< mCollectionPagerAdapter.getCount();我++){
actionBar.addTab(actionBar.newTab()
.setText(mCollectionPagerAdapter.getPageTitle(I))
.setTabListener(本));
}
}
公共无效onTabUnselected(ActionBar.Tab选项卡,
FragmentTransaction fragmentTransaction){
}
公共无效onTabSelected(ActionBar.Tab选项卡,
FragmentTransaction fragmentTransaction){
mViewPager.setCurrentItem(tab.getPosition());
}
公共无效onTabReselected(ActionBar.Tab选项卡,
FragmentTransaction fragmentTransaction){
}
公共类CollectionPagerAdapter扩展FragmentPagerAdapter {
最终诠释NUM_ITEMS = 3; //标签的数量
公共CollectionPagerAdapter(FragmentManager FM){
超(FM);
}
@覆盖
公共片段的getItem(int i)以{
片段片段=新TabFragment();
捆绑的args =新包();
args.putInt(TabFragment.ARG_OBJECT,我);
fragment.setArguments(参数);
返回片段;
}
@覆盖
公众诠释getCount将(){
返回NUM_ITEMS;
}
@覆盖
公共CharSequence的getPageTitle(INT位置){
字符串tabLabel = NULL;
开关(位置){
情况下0:
tabLabel =的getString(R.string.label1);
打破;
情况1:
tabLabel =的getString(R.string.label2);
打破;
案例2:
tabLabel =的getString(R.string.label3);
打破;
}
返回tabLabel;
}
}
公共静态类TabFragment扩展片段{
公共静态最后弦乐ARG_OBJECT =对象;
@覆盖
公共查看onCreateView(LayoutInflater充气,容器的ViewGroup,
捆绑savedInstanceState){
捆绑的args = getArguments();
INT位置= args.getInt(ARG_OBJECT);
INT tabLayout = 0;
开关(位置){
情况下0:
tabLayout = R.layout.tab1;
打破;
情况1:
tabLayout = R.layout.tab2;
打破;
案例2:
tabLayout = R.layout.tab3;
打破;
}
查看rootView = inflater.inflate(tabLayout,集装箱,假);
返回rootView;
}
}
}
activity_main
:
< android.support.v4.view.ViewPager的xmlns:机器人=http://schemas.android.com/apk/res/android
的xmlns:工具=http://schemas.android.com/tools
机器人:ID =@ + ID /寻呼机
机器人:layout_width =match_parent
机器人:layout_height =match_parent
工具:上下文=。MainActivity/>
tab1.xml
:
< XML版本=1.0编码=UTF-8&GT?;
< LinearLayout中的xmlns:机器人=http://schemas.android.com/apk/res/android
机器人:ID =@ + ID / TAB1
机器人:layout_width =match_parent
机器人:layout_height =match_parent
机器人:方向=垂直
机器人:重力=中心>
<的TextView
机器人:ID =@ + ID / textView1
机器人:layout_width =WRAP_CONTENT
机器人:layout_height =WRAP_CONTENT
机器人:layout_gravity =中心
机器人:文本=@字符串/ body1/>
< / LinearLayout中>
tab2.xml
:
< XML版本=1.0编码=UTF-8&GT?;
< LinearLayout中的xmlns:机器人=http://schemas.android.com/apk/res/android
机器人:ID =@ + ID / TAB2
机器人:layout_width =match_parent
机器人:layout_height =match_parent
机器人:方向=垂直
机器人:重力=中心>
<的TextView
机器人:ID =@ + ID / textView2
机器人:layout_width =WRAP_CONTENT
机器人:layout_height =WRAP_CONTENT
机器人:layout_gravity =中心
机器人:文本=@字符串/ body2/>
< / LinearLayout中>
tab3.xml
:
< XML版本=1.0编码=UTF-8&GT?;
< LinearLayout中的xmlns:机器人=http://schemas.android.com/apk/res/android
机器人:ID =@ + ID / TAB3
机器人:layout_width =match_parent
机器人:layout_height =match_parent
机器人:方向=垂直
机器人:重力=中心>
<的TextView
机器人:ID =@ + ID / textView3
机器人:layout_width =WRAP_CONTENT
机器人:layout_height =WRAP_CONTENT
机器人:layout_gravity =中心
机器人:文本=@字符串/ body3/>
< / LinearLayout中>
it would be nice, if i could swipe between the tabs i had in my actionbar.
I've followed these tutorial: http://developer.android.com/training/implementing-navigation/lateral.html but it wont work. :( I cannot swipe with a gesture between the tabs.
Here is my main activity:
public class Hauptmenue_extended extends ActionBarActivity implements
android.content.DialogInterface.OnClickListener {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_hauptmenue_extended);
try {
mPullToRefreshAttacher = PullToRefreshAttacher.get(this);
actionBar = getSupportActionBar();
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
actionBar.setDisplayHomeAsUpEnabled(true);
actionBar.setHomeButtonEnabled(true);
mAdapter = new TabsPagerAdapter(getSupportFragmentManager());
mViewPager = (ViewPager) findViewById(R.id.pager);
mViewPager.setAdapter(mAdapter);
Tab tabB = actionBar.newTab();
tabB.setText("Home");
tabB.setIcon(R.drawable.icon_home);
tabB.setTabListener(new TabListener<Startmenue_activity>(this,
"Start", Startmenue_activity.class, this.mViewPager));
actionBar.addTab(tabB);
Tab tabA = actionBar.newTab();
tabA.setText("");
tabA.setIcon(R.drawable.icon_nachrichten_sel);
tabA.setTabListener(new TabListener<Nachrichten_activity>(this,
"Nachrichten", Nachrichten_activity.class, this.mViewPager));
actionBar.addTab(tabA);
Tab tabC = actionBar.newTab();
tabC.setText("");
tabC.setIcon(R.drawable.icon_favoriten);
tabC.setTabListener(new TabListener<Favoriten_activity>(this,
"Favoriten", Favoriten_activity.class, this.mViewPager));
actionBar.addTab(tabC);
this.conEinst = new conEinstellungen(getBaseContext());
} catch (Exception ex) {
ex.printStackTrace();
// HelperClassAlertDialog.zeigeInfoDialog(this, "Error...",
}
}
public class TabsPagerAdapter extends FragmentPagerAdapter {
public TabsPagerAdapter(FragmentManager fm) {
super(fm);
}
public Fragment getItem(int index) {
switch (index) {
case 0:
// Top Rated fragment activity
return new Startmenue_activity();
case 1:
// Games fragment activity
return new Nachrichten_activity();
case 2:
// Movies fragment activity
return new Favoriten_activity();
}
return null;
}
public int getCount() {
// get item count - equal to number of tabs
return 3;
}
}
And this is the XML:
<android.support.v4.view.ViewPager xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/pager" android:layout_width="match_parent" android:layout_height="match_parent" > <android.support.v4.view.PagerTabStrip android:id="@+id/tabs" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_gravity="top" /> </android.support.v4.view.ViewPager>
解决方案
This works perfectly, you will swipe between tabs:
MainActivity
:
public class MainActivity extends FragmentActivity implements
ActionBar.TabListener {
CollectionPagerAdapter mCollectionPagerAdapter;
ViewPager mViewPager;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mCollectionPagerAdapter = new CollectionPagerAdapter(
getSupportFragmentManager());
final ActionBar actionBar = getActionBar();
actionBar.setHomeButtonEnabled(false);
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
mViewPager = (ViewPager) findViewById(R.id.pager);
mViewPager.setAdapter(mCollectionPagerAdapter);
mViewPager
.setOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() {
@Override
public void onPageSelected(int position) {
actionBar.setSelectedNavigationItem(position);
}
});
for (int i = 0; i < mCollectionPagerAdapter.getCount(); i++) {
actionBar.addTab(actionBar.newTab()
.setText(mCollectionPagerAdapter.getPageTitle(i))
.setTabListener(this));
}
}
public void onTabUnselected(ActionBar.Tab tab,
FragmentTransaction fragmentTransaction) {
}
public void onTabSelected(ActionBar.Tab tab,
FragmentTransaction fragmentTransaction) {
mViewPager.setCurrentItem(tab.getPosition());
}
public void onTabReselected(ActionBar.Tab tab,
FragmentTransaction fragmentTransaction) {
}
public class CollectionPagerAdapter extends FragmentPagerAdapter {
final int NUM_ITEMS = 3; // number of tabs
public CollectionPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int i) {
Fragment fragment = new TabFragment();
Bundle args = new Bundle();
args.putInt(TabFragment.ARG_OBJECT, i);
fragment.setArguments(args);
return fragment;
}
@Override
public int getCount() {
return NUM_ITEMS;
}
@Override
public CharSequence getPageTitle(int position) {
String tabLabel = null;
switch (position) {
case 0:
tabLabel = getString(R.string.label1);
break;
case 1:
tabLabel = getString(R.string.label2);
break;
case 2:
tabLabel = getString(R.string.label3);
break;
}
return tabLabel;
}
}
public static class TabFragment extends Fragment {
public static final String ARG_OBJECT = "object";
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
Bundle args = getArguments();
int position = args.getInt(ARG_OBJECT);
int tabLayout = 0;
switch (position) {
case 0:
tabLayout = R.layout.tab1;
break;
case 1:
tabLayout = R.layout.tab2;
break;
case 2:
tabLayout = R.layout.tab3;
break;
}
View rootView = inflater.inflate(tabLayout, container, false);
return rootView;
}
}
}
activity_main
:
<android.support.v4.view.ViewPager xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/pager"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity"/>
tab1.xml
:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/tab1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:gravity="center">
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="@string/body1" />
</LinearLayout>
tab2.xml
:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/tab2"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:gravity="center">
<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="@string/body2" />
</LinearLayout>
tab3.xml
:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/tab3"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:gravity="center">
<TextView
android:id="@+id/textView3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="@string/body3" />
</LinearLayout>
这篇关于Android的动作条选项卡 - 刷卡的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文