android 在fragment里的怎样实现滑动fragment

android 在fragment里的怎样实现滑动fragment,第1张

 按照一般的思路,我们或许会这么做:首先,使用getActionBar()方法获得 *** 作栏,然后我们将 *** 作栏的导航模式设置为Tab,并添加一些Tab,然后实现TabListener接口;其次,我们将多个布局通过Inflater()方法变成View,然后放到ViewPager里面,并实现OnPageChangeListener接口就可以了。由此我们可以写出下面的代码

package comAndroidAnyViewUI;

import javautilArrayList;

import androidosBundle;

import androidsupportv4appFragmentActivity;

import androidsupportv4appFragmentManager;

import androidsupportv4viewViewPager;

import androidsupportv4viewViewPagerOnPageChangeListener;

import androidappActionBar;

import androidappActionBarTab;

import androidappActionBarTabListener;

import androidappActivity;

import androidappFragmentTransaction;

import androidviewLayoutInflater;

import androidviewView;

public class MainActivity extends FragmentActivity implements TabListener,OnPageChangeListener {

private ActionBar mActionBar;

private ViewPager mViewPager;

private TabPagerAdapter mAdapter;

private ArrayList<View> mViews;

private ArrayList<ActionBarTab> mTabs;

@Override

protected void onCreate(Bundle savedInstanceState) {

superonCreate(savedInstanceState);

setContentView(Rlayoutlayout_main);

//取得ActionBar

mActionBar=getActionBar();

//以Tab方式导航

mActionBarsetNavigationMode(ActionBarNAVIGATION_MODE_TABS);

//禁用ActionBar标题

mActionBarsetDisplayShowTitleEnabled(false);

//禁用ActionBar图标

mActionBarsetDisplayUseLogoEnabled(false);

//禁用ActionBar返回键

mActionBarsetDisplayShowHomeEnabled(false);

//添加Tabs

mTabs=new ArrayList<ActionBarTab>();

ActionBarTab tab0=mActionBarnewTab();

tab0setText("界面一");

tab0setTabListener(this);

mTabsadd(tab0);

mActionBaraddTab(tab0);

ActionBarTab tab1=mActionBarnewTab();

tab1setText("界面二");

tab1setTabListener(this);

mTabsadd(tab1);

mActionBaraddTab(tab1);

ActionBarTab tab2=mActionBarnewTab();

tab2setText("界面三");

tab2setTabListener(this);

mTabsadd(tab2);

mActionBaraddTab(tab2);

//获取ViewPager

mViewPager=(ViewPager)findViewById(RidViewPager);

//初始化mViews

mViews=new ArrayList<View>();

mViewsadd(LayoutInflaterfrom(this)inflate(Rlayoutlayout_0, null));

mViewsadd(LayoutInflaterfrom(this)inflate(Rlayoutlayout_1, null));

mViewsadd(LayoutInflaterfrom(this)inflate(Rlayoutlayout_2, null));

//初始化mAdapter

mAdapter=new TabPagerAdapter(mViews);

mViewPagersetAdapter(mAdapter);

mViewPagersetOnPageChangeListener(this);

//默认显示第二项

mViewPagersetCurrentItem(2);

}

@Override

public void onTabReselected(Tab mTab, FragmentTransaction arg1)

{

}

@Override

public void onTabSelected(Tab mTab, FragmentTransaction arg1)

{

if(mViewPager!=null)

{

mViewPagersetCurrentItem(mTabgetPosition());

}

}

@Override

public void onTabUnselected(Tab mTab, FragmentTransaction arg1)

{

}

@Override

public void onPageScrollStateChanged(int arg0)

{

}

@Override

public void onPageScrolled(int arg0, float arg1, int arg2)

{

}

@Override

public void onPageSelected(int Index)

{

//设置当前要显示的View

mViewPagersetCurrentItem(Index);

//选中对应的Tab

mActionBarselectTab(mTabsget(Index));

}

}

其中,TabPagerAdapter是一个继承自PagerAdapter的适配器类:

package comAndroidAnyViewUI;

import javautilArrayList;

import androidsupportv4viewPagerAdapter;

import androidsupportv4viewViewPager;

import androidviewView;

public class TabPagerAdapter extends PagerAdapter

{

private ArrayList<View> mViews;

public TabPagerAdapter(ArrayList<View> mViews)

{

thismViews=mViews;

}

@Override

public void destroyItem(View container, int position, Object object)

{

((ViewPager)container)removeView(mViewsget(position));

}

@Override

public Object instantiateItem(View container, int position)

{

((ViewPager)container)addView(mViewsget(position), 0);

return mViewsget(position);

}

@Override

public int getCount()

{

return mViewssize();

}

@Override

public boolean isViewFromObject(View mView, Object mObject)

{

return (mView==mObject);

}

}

我们的代码从逻辑上来讲是没有什么问题的,但是当我们试图运行这段代码的时候,我们发现这段代码出了问题,而问题就出在OnTabSelected()上。但是我们冷静下来想了想,没有错啊,那么问题到底出在哪里呢?看到网上的朋友说,这里这个适配器应该继承自FragmentPagerAdapter:

package comAndroidAnyViewUI;

import androidsupportv4appFragment;

import androidsupportv4appFragmentManager;

import androidsupportv4appFragmentPagerAdapter;

public class ViewPagerAdapter extends FragmentPagerAdapter {

//定义三个Fragment的索引

public static final int Fragment_Index_0=0;

public static final int Fragment_Index_1=1;

public static final int Fragment_Index_2=2;

public ViewPagerAdapter(FragmentManager fragmentManager)

{

super(fragmentManager);

}

@Override

public Fragment getItem(int Index)

{

Fragment mFragemnt=null;

switch(Index)

{

case Fragment_Index_0:

mFragemnt=new Fragment_0();

break;

case Fragment_Index_1:

mFragemnt=new Fragment_1();

break;

case Fragment_Index_2:

mFragemnt=new Fragment_2();

break;

}

return mFragemnt;

}

@Override

public int getCount()

{

return 3;

}

}

其中,Fragment_0、Fragment_1、Fragment_2是继承自Fragment的类,由于三个布局基本一样,这里只给出Fragment_0的代码:

package comAndroidAnyViewUI;

import androidosBundle;

import androidsupportv4appFragment;

import androidviewLayoutInflater;

import androidviewView;

import androidviewViewGroup;

public class Fragment_0 extends Fragment

{

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

{

View mView=inflaterinflate(Rlayoutlayout_0, container, false);

return mView;

}

}

ActionBar 最左侧图标设置不可点击只需要以下步骤:

1获取ActinBar实例

ActionBar actionBar = getActionBar();

2设置不可点击

actionBarsetDisplayHomeAsUpEnabled(true); // 决定左上角图标的右侧是否有向左的小箭头。true 有小箭头,并且图标可以点击,false没有小煎头,并且不可点击。

3actionBarsetDisplayShowHomeEnabled(false);//设置是否显示HOME图标,false表示没有。

ios 怎么获取一个view的位置

打开appstore进入应用,右上角的分享按钮(从右往左数第二个),拷贝连接即可。如下图:

如何获取一个view在布局中的位置

public View getViewByPosition(int pos, ListView listView) {

final int firstListItemPosition = listViewgetFirstVisiblePosition();

final int lastListItemPosition = firstListItemPosition + listViewgetChildCount() - 1;

if (pos < firstListItemPosition || pos > lastListItemPosition ) {

return listViewgetAdapter()getView(pos, null, listView);

} else {

final int childIndex = pos - firstListItemPosition;

return listViewgetChildAt(childIndex);

}

} 已解决,通过这个方法就可以实现了获取item中的view

如何获取一个uicollectionviewcell的位置

UICollectionViewCell cell = (UICollectionViewCell )[collectionView

cellForItemAtIndexPath:indexPath];一句话就能获取到点击cell的frame,十分好用,同样适用于tableView。

ios中怎么获取collectionview中cell的位置

你在点击cell的时候调用 - (void)performSegueWithIdentifier:(NSString )identifier sender:(id)sender ;

那不是有个sender嘛,你可以给它传值。

然后在-(void)prepareForSegue:(UIStoryboardSegue )segue sender:(id)sender 里的sender,就是你刚传的那个值。

Flash中怎么通过代码来获取一个左上、右下的位置,_x和_y只能获取图像原点的位置。

设左上坐标(x1,y1),右下坐标(x2,y2),原点坐标(x0,y0),元件名称为mcPic,则:

x1 = mcPicx - mcPicwidth/2

y1 = mcPicy - mcPicheight/2

x2 = mcPicx + mcPicwidth/2

y2 = mcPicy + mcPicheight/2

x0 = mcPicx

y0 = mcPicy

怎样通过qq获取一个人的位置信息

除了使用者本人定位,其他人无法获取,这属于隐私保护

android 怎么获取ActionBar上某个menu的位置

Android 30以上的手机默认是不显示溢出菜单的,那如何强制在Android 44以下的手机显示溢出菜单呢?可以使用以下方法:

[java] view plaincopy在CODE上查看代码片派生到我的代码片

强制actionbar显示overflow菜单

适配类似魅族手机无法显示溢出菜单的解决方案

上面已经解决了如何在Android 44以下的手机强制显示溢出菜单,下面来解决一些奇葩手机无法显示溢出菜单的问题。为什么魅族手机无法显示,了解到的是魅族没有所谓的actionbar,它们称为 artbar,看来是魅族的工程师把官方的actionbar进行了修改。一个字,坑!不过小巫想到了一个解决办法,我们每部手机都有自己的手机品牌,我们可以针对这些奇葩手机进行适配,溢出菜单我们就使用popupwindow来替代。

MATLAB中,怎么获取一个向量中最大的N个元素,并获取它们所在的位置

v=rand(1,5)

[mv mi]=max(v)

%mv为最大值,mi为最大值索引,v(mi)=mv

[sv si]=sort(v,2,'descend')

%si为从大到小的序列,比如要去最大的3个数就是v(si(1:3))

ios地图定位怎么获取两个点之间的位置

通常我们在手机端打开百度地图后,客户端会自动对我们所处的位置进行定位的。如果没有进行定位的话,你可以点击地图页面的左下角的圆形图标,见下图红色框中所示,点击之后会自动更新,并且显示定位的地址信息。

VBS中如何获取一个数组中最大值的位置

以下VBS脚本可以实现这个功能:

Public Function getArrMaxValueIndex(ByVal arr)

Dim ix, ixMax

ixMax = 0

For ix = 1 To UBound(arr)

If ( arr(ixMax) < arr(ix) ) Then

ixMax = ix

End If

Next

getArrMaxValueIndex = ixMax

End Function

'Define array and index for max entry

Dim arr, ixMax

'Initialize the array

arr = Array(4, 1, 8, 6, 3,6)

'Get the index of the max value

ixMax = getArrMaxValueIndex(arr)

'Print result

MsgBox "Max value: " & arr(ixMax) & " was found at " & ixMax & " index"

有时候在一些子页面或者内容页面,不需要显示ActionBar的标题栏图标。可用如下方式进行设置。

首先获取到ActionBar对象

ActionBar actionBar=getActionBar();

使用android:logo属性。不像方方正正的icon,logo的图像不会有任何宽度限制。

logo图像典型的给你的APP提供品牌。当有Logo的时候,可以隐藏label。

默认的,ActionBar使用Activity的android:icon属性,还有一致的android:label属性。

隐藏Label标签:actionBarsetDisplayShowTitleEnabled(false);

隐藏logo和icon:actionBarsetDisplayShowHomeEnabled(false);

设置标题,一个主标题,一个子标题

actionBarsetSubtitle(“Inbox”);

actionBarsetTitle(“Label:important”);

默认的ActionBar的背景颜色取决于activity指定的Theme。Holo Theme它的背景是黑色的。

可以指定任意的Drawabel对象作为背景,使用setBackgroundDrawable方法:

ActionBar actionBar = getActionBar();

Resources r = getResources();

Drawable myDrawable = rgetDrawable(Rdrawablegradient_header);

actionBarsetBackgroundDrawable(myDrawable);

注意:ActionBar会自动缩放你的背景图

覆盖模式

默认情况下,actionBar放在activity的顶部,且作为activity布局的一部分。设置成为覆盖模式后,actionBar相当于漂浮在activity之上,不干预activity的布局。设置如下:

@Override

public void onCreate(Bundle savedInstanceState) {

superonCreate(savedInstanceState);

getWindow()requestFeature(WindowFEATURE_ACTION_BAR_OVERLAY);

setContentView(Rlayoutmain);

}

getLocationOnScreen ,计算该视图在全局坐标系中的x,y值,这个值是要从屏幕顶端算起,也就是索包括了通知栏的高度。

getLocationInWindow ,计算该视图在它所在的widnow的坐标x,y值, 非常准确!

getLeft , getTop, getBottom, getRight, 这一组是获取相对在它父亲里的坐标。

以上就是关于android 在fragment里的怎样实现滑动fragment全部的内容,包括:android 在fragment里的怎样实现滑动fragment、android中的actionbar怎么设置左侧图标、ios 怎么获取一个view的位置等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9267889.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-26
下一篇 2023-04-26

发表评论

登录后才能评论

评论列表(0条)

保存