精华内容
下载资源
问答
  • 现在很多的ViewPager+Fragment都要Activity继承FragmentActivity然后Adapter也是要继承于FragmentPagerAdapter实现的。然后我想想能不能直接用Activity跟PagerAdapter来实现。。。。当然了,也是项目需要。。接...

    现在很多的ViewPager+Fragment都要Activity继承于FragmentActivity然后Adapter也是要继承于FragmentPagerAdapter实现的。然后我想想能不能直接用Activity跟PagerAdapter来实现。。。。当然了,也是项目需要。。接下来就是我的实现思路,其实就是改了一下PagerAdapter的instantiateItem函数就行

    效果如下:(看代码,不要看图。。)


    以下就是详细的代码:

    import java.util.ArrayList;
    
    import com.example.androidtest.R;
    
    import android.app.Activity;
    import android.app.Fragment;
    import android.app.FragmentManager;
    import android.app.FragmentTransaction;
    import android.os.Bundle;
    import android.support.v4.view.PagerAdapter;
    import android.support.v4.view.ViewPager;
    import android.support.v4.view.ViewPager.OnPageChangeListener;
    import android.view.View;
    import android.view.ViewGroup;
    import android.widget.ImageView;
    
    public class MainViewPager extends Activity{
    	private ViewPager pager;
    	ArrayList<Fragment> mFragmentList = new ArrayList<Fragment>();
    	ArrayList<String> titleContainer = new ArrayList<String>();
    	private ImageView[] indicator_imgs = new ImageView[2];
    	@SuppressWarnings("deprecation")
    	@Override
    	protected void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.viewpager_main);
    		pager = (ViewPager) this.findViewById(R.id.viewpager);
    		
    		//viewpager开始添加Fragment
    		mFragmentList.add(new HomeFagment());
    		mFragmentList.add(new SecondFragment());
    
    		//设置ViewPager界面切换之间不会重新加载
    		pager.setOffscreenPageLimit(mFragmentList.size());
    		pager.setAdapter(new PagerAdapter() {
    			//viewpager中的组件数量
    			@Override
    			public int getCount() {
    				return mFragmentList.size();
    			}
    			//每次滑动的时候生成的组件  重点在这!!!
    			@Override
    			public Object instantiateItem(ViewGroup container, int position) {
    				Fragment fragment = mFragmentList.get(position);
    				if (!fragment.isAdded()) {	//判断当前的Fragment是否存在
    					FragmentManager fragmentManager = getFragmentManager();
    					FragmentTransaction ft = fragmentManager.beginTransaction();
    					ft.add(fragment, fragment.getClass().getSimpleName());
    					ft.commitAllowingStateLoss();
    					fragmentManager.executePendingTransactions();
    				}
    
    				if (fragment.getView().getParent() == null) {
    					container.addView(fragment.getView());	//把Fragment加到ViewPager里面
    				}
    
    				return fragment.getView();
    			}
    
    			@Override
    			public boolean isViewFromObject(View arg0, Object arg1) {
    				return arg0 == arg1;
    			}
    			@Override
    			public int getItemPosition(Object object) {
    				return super.getItemPosition(object);
    			}
    			@Override
    			public CharSequence getPageTitle(int position) {
    				return titleContainer.get(position);
    			}});
    		
    		pager.setOnPageChangeListener(new OnPageChangeListener() {
    			
    			@Override
    			public void onPageSelected(int arg0) {
    				// 改变所有导航的背景图片为:未选中
    			      for (int i = 0; i < indicator_imgs.length; i++) {
    			        indicator_imgs[i].setBackgroundResource(R.drawable.home_off);
    			      }
    			      // 改变当前背景图片为:选中
    			      indicator_imgs[arg0].setBackgroundResource(R.drawable.home_on);
    			}
    			@Override
    			public void onPageScrolled(int arg0, float arg1, int arg2) {
    			}
    			@Override
    			public void onPageScrollStateChanged(int arg0) {
    			}
    		});
    		initIndicator();
    	}
    	 /**
    	   * 初始化引导图标
    	   * 动态创建多个小圆点,然后组装到线性布局里
    	   */
    	  private void initIndicator(){
    	    
    	    indicator_imgs[0] = (ImageView) findViewById(R.id.home_ic);
    	    indicator_imgs[1] = (ImageView) findViewById(R.id.game_ic);
    	    for (int i = 0; i < 2; i++) {
    	      if (i == 0) { // 初始化第一个为选中状态
    	        indicator_imgs[i].setBackgroundResource(R.drawable.home_on);
    	      } else {
    	        indicator_imgs[i].setBackgroundResource(R.drawable.home_off);
    	      }
    	    }
    	  }
    }
    HomeFragment的话也就是随意的添加一个布局而已
    import android.app.Fragment;
    import android.os.Bundle;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;
    /**
     * 首页
     *
     */
    public class HomeFagment extends Fragment{
    	@Override
    	public View onCreateView(LayoutInflater inflater, ViewGroup container,
    			Bundle savedInstanceState) {
    		return inflater.inflate(R.layout.guide_item1, null);
    	}
    }

    布局:

    <?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" >
    
        <android.support.v4.view.ViewPager
            android:id="@+id/viewpager"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1" >
        </android.support.v4.view.ViewPager>
    
        <LinearLayout
            android:id="@+id/indicator"
            android:layout_width="match_parent"
            android:layout_height="50dp"
            android:orientation="horizontal" >
    
            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:gravity="center_horizontal"
                android:orientation="vertical" >
    
                <ImageView
                    android:id="@+id/home_ic"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:background="@drawable/home_on" />
    
                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="首页" />
            </LinearLayout>
    
            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:gravity="center_horizontal"
                android:orientation="vertical" >
    
                <ImageView
                    android:id="@+id/game_ic"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:background="@drawable/game_off" />
    
                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="游戏" />
            </LinearLayout>
        </LinearLayout>
    
    </LinearLayout>
    然后标签页的话也就是在个ViewPager滑动的时候设置监听:

    @Override
    			public void onPageSelected(int arg0) {
    				// 改变所有导航的背景图片为:未选中
    			      for (int i = 0; i < indicator_imgs.length; i++) {
    			        indicator_imgs[i].setBackgroundResource(R.drawable.home_off);
    			      }
    			      // 改变当前背景图片为:选中
    			      indicator_imgs[arg0].setBackgroundResource(R.drawable.home_on);
    			}
    这样的图片设置的话看起来不是很完美。。如果不是用一张图片的话可能要操作一大堆的逻辑关系,然后今天看到有一个用适配器的方法来更新底部的标题栏,这样在页面滑动的时候只要调用notifyDataSetChanged函数就可以了,当然了,用适配器的话肯定要配置适配器文件,但是配置完之后就方便了许多了。并且在以后如果底部的菜单栏发生变化的,修改起来也很方便,不需要去动配置文件啥的,只要改改一些代码。

    以下就是改良版的。。。

    MainActivity:

    import java.util.ArrayList;
    
    import com.example.androidtest.R;
    
    import android.app.Activity;
    import android.app.Fragment;
    import android.app.FragmentManager;
    import android.app.FragmentTransaction;
    import android.os.Bundle;
    import android.support.v4.view.PagerAdapter;
    import android.support.v4.view.ViewPager;
    import android.support.v4.view.ViewPager.OnPageChangeListener;
    import android.view.View;
    import android.view.ViewGroup;
    
    public class MainViewPager extends Activity{
    	private ViewPager pager;
    	ArrayList<Fragment> mFragmentList = new ArrayList<Fragment>();
    	ArrayList<String> titleContainer = new ArrayList<String>();
    	private ArrayList<Tab> list = new ArrayList<Tab>();
    	private TabView tabView;
    	private TabAdapter mAdapter;
    	@SuppressWarnings("deprecation")
    	@Override
    	protected void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.viewpager_main);
    		pager = (ViewPager) this.findViewById(R.id.viewpager);
    		tabView = (TabView) findViewById(R.id.tab);
    		//viewpager开始添加Fragment
    		mFragmentList.add(new HomeFagment());
    		mFragmentList.add(new SecondFragment());
    
    		Tab tabHome = new Tab();	//增加菜单项
    		tabHome.setName("首页");
    		tabHome.setIcon(R.drawable.home_icon);//这个地方设置的话不是单纯的一张图片 是一个drawable的select配置图片,这样才能在选中跟未选显示不同的图片
    		list.add(tabHome);
    		
    		Tab tabGame = new Tab();
    		tabGame.setName("游戏");
    		tabGame.setIcon(R.drawable.game_icon);
    		list.add(tabGame);
    		
    		mAdapter = new TabAdapter(MainViewPager.this, list);
    		tabView.setNumColumns(list.size());//设置底部菜单栏的个数
    		tabView.setAdapter(mAdapter);
    		
    		//设置ViewPager界面切换之间不会重新加载的页面数
    		pager.setOffscreenPageLimit(mFragmentList.size());
    		pager.setAdapter(new PagerAdapter() {
    			//viewpager中的组件数量
    			@Override
    			public int getCount() {
    				return mFragmentList.size();
    			}
    			//每次滑动的时候生成的组件
    			@Override
    			public Object instantiateItem(ViewGroup container, int position) {
    				Fragment fragment = mFragmentList.get(position);
    				if (!fragment.isAdded()) {	//判断当前的Fragment是否存在
    					FragmentManager fragmentManager = getFragmentManager();
    					FragmentTransaction ft = fragmentManager.beginTransaction();
    					ft.add(fragment, fragment.getClass().getSimpleName());
    					ft.commitAllowingStateLoss();
    					fragmentManager.executePendingTransactions();
    				}
    
    				if (fragment.getView().getParent() == null) {
    					container.addView(fragment.getView());	//把Fragment加到ViewPager里面
    				}
    
    				return fragment.getView();
    			}
    
    			@Override
    			public boolean isViewFromObject(View arg0, Object arg1) {
    				return arg0 == arg1;
    			}
    			@Override
    			public int getItemPosition(Object object) {
    				return super.getItemPosition(object);
    			}
    			@Override
    			public CharSequence getPageTitle(int position) {
    				return titleContainer.get(position);
    			}});
    
    		pager.setOnPageChangeListener(new OnPageChangeListener() {
    
    			@Override
    			public void onPageSelected(int arg0) {
    				mAdapter.setSelectedPosition(arg0);//需要改动的话只要调用这两个代买,一个是设置选中的位置,一个是适配器更新
    				mAdapter.notifyDataSetChanged();
    			}
    			@Override
    			public void onPageScrolled(int arg0, float arg1, int arg2) {
    			}
    			@Override
    			public void onPageScrollStateChanged(int arg0) {
    			}
    		});
    	}
    }

    TabAdapter:

    import java.util.ArrayList;
    
    import com.example.androidtest.R;
    
    
    import android.content.Context;
    import android.graphics.Color;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;
    import android.widget.BaseAdapter;
    import android.widget.ImageView;
    import android.widget.RelativeLayout;
    import android.widget.TextView;
    
    public class TabAdapter extends BaseAdapter{
    
    	private Context context;
    	private ArrayList<Tab> list;
    
    	public TabAdapter(Context context, ArrayList<Tab> list) {
    		this.context = context;
    		this.list = list;
    	}
    
    	private int selectedPosition = 0;// 选中的位置
    	
    	//设置选中位置
    	public void setSelectedPosition(int position) {
    		selectedPosition = position;
    	}
    
    	@Override
    	public View getView(int position, View convertView, ViewGroup parent) {
    		ViewHold viewhold;
    		if (convertView == null) {
    			viewhold = new ViewHold();
    			convertView = LayoutInflater.from(context).inflate(R.layout.tab_layout, parent, false);//加载单个tab的layout
    			TextView name = (TextView) convertView.findViewById(R.id.tv_name);//tab名称
    			ImageView img = (ImageView) convertView.findViewById(R.id.iv_icon);//tab图标
    			viewhold.name = name;
    			viewhold.img = img;
    			convertView.setTag(viewhold);
    		} else {
    			viewhold = (ViewHold) convertView.getTag();
    		}
    		viewhold.img.setBackgroundResource(list.get(position).getIcon());
    		viewhold.name.setText(list.get(position).getName());
    		if (position == selectedPosition) {	//这个地方进行选中的颜色处理 选中的选项
    			viewhold.name.setTextColor(Color.RED);
    			viewhold.img.setSelected(true);	//图片设置为选中状态
    		} else {
    			viewhold.name.setTextColor(Color.BLACK);
    			viewhold.img.setSelected(false);
    		}
    		return convertView;
    	}
    
    	class ViewHold {
    		TextView name;
    		ImageView img;
    	}
    
    	@Override
    	public int getCount() {
    		// TODO Auto-generated method stub
    		return list.size();
    	}
    
    	@Override
    	public Object getItem(int arg0) {
    		// TODO Auto-generated method stub
    		return list.get(arg0);
    	}
    
    	@Override
    	public long getItemId(int arg0) {
    		return arg0;
    	}
    }

    因为每个菜单项都是一个GridView子项,所以可以继承GridView然后实现自己的TabGridView,也可以直接用GridView。这个视情况而定了。TabGridView如下:

    import android.content.Context;
    import android.util.AttributeSet;
    import android.view.KeyEvent;
    import android.view.MotionEvent;
    import android.widget.GridView;
    
    public class TabView extends GridView{
    
    	public TabView(Context context, AttributeSet attrs, int defStyle) {
    		super(context, attrs, defStyle);
    		// TODO Auto-generated constructor stub
    	}
    
    	public TabView(Context context, AttributeSet attrs) {
    		super(context, attrs);
    		// TODO Auto-generated constructor stub
    	}
    
    	public TabView(Context context) {
    		super(context);
    		// TODO Auto-generated constructor stub
    	}
    
    	@Override
    	public boolean dispatchKeyEvent(KeyEvent event) {
    		if(event.getAction() == MotionEvent.ACTION_MOVE){
    			return true;//禁止Gridview进行滑动
    		}
    		return super.dispatchKeyEvent(event);
    	}
    }

    Tab:

    /**
     * 菜单栏子项
     */
    public class Tab {
    	String name;//tab名称
    	int icon;//tab图标
    	public String getName() {
    		return name;
    	}
    	public void setName(String name) {
    		this.name = name;
    	}
    	public int getIcon() {
    		return icon;
    	}
    	public void setIcon(int icon) {
    		this.icon = icon;
    	}
    }
    还有Drawable,就拿一个home_icon来看看:

    <?xml version="1.0" encoding="utf-8"?>
    <selector xmlns:android="http://schemas.android.com/apk/res/android" >
        <item android:drawable="@drawable/game_off" android:state_selected="false"></item>
        <item android:drawable="@drawable/game_on" android:state_selected="true"></item>
    
    </selector>

    viewpager_main.xml:

    <?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" >
    
        <android.support.v4.view.ViewPager
            android:id="@+id/viewpager"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1" >
        </android.support.v4.view.ViewPager>
    
        <com.example.viewpager.TabView
            android:id="@+id/tab"
            android:layout_width="match_parent"
            android:layout_height="wrap_content" />
    
    </LinearLayout>

    tab子项的xml文件:tab_layout:

    <?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" >
        <ImageView 
            android:id="@+id/iv_icon"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:background="@drawable/home_off"
            />
        <TextView 
            android:id="@+id/tv_name"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="123"
            />
    
    </LinearLayout>
    







    展开全文
  • 继承fragment 与 fragmentactivity的区别

    千次阅读 2018-05-20 14:00:36
    1、fragmentactivity 继承activity,用来解决android3.0 之前没有fragment的api,所以在使用的时候需要导入support包,同时继承fragmentActivity,这样在activity中就能嵌入fragment来实现你想要的布局效果。...

    1、fragmentactivity 继承自activity,用来解决android3.0 之前没有fragment的api,所以在使用的时候需要导入support包,同时继承fragmentActivity,这样在activity中就能嵌入fragment来实现你想要的布局效果。

    2、当然3.0之后你就可以直接继承自Activity,并且在其中嵌入使用fragment了。

    3、获得Manager的方式也不同

    3.0以下:getSupportFragmentManager();

    3.0以上:getFragmentManager();

    展开全文
  • 想用Toolbar+ViewPager+Fragment做UI,但是如果继承FragmentActivity的话就没法调用setSupportActionBar()方法来实现Toolbar
  • Android Google Map v2,继承FragmentActivity 使用MapFragment实现定位 源代码!源工程!
  • 继承Fragment的自定义Fragment类CustomFragment,不能像继承Activity的自定义Activity类CustomActivity一样,通过修改构造方法来实现传递参数。所以我们要通过bundle和instance来实现。 分四步: 1.创建参数对应的...

    继承Fragment的自定义Fragment类CustomFragment,不能像继承Activity的自定义Activity类CustomActivity一样,通过修改构造方法来实现传递参数。所以我们要通过bundle和instance来实现。
    分四步:
    1.创建参数对应的全局变量,用于使用。
    2.newInstance初始化Fragment,通过方法里传递参数和Bundle。
    3.将初始化Fragment时用Bundle传入的参数,赋值给全局变量。
    4.当我需要用到对应参数数据时,可以通过调用对应参数的全局变量来使用。

    public class CustomFragmentextends Fragment {
    //1.创建参数对应的全局变量,用于使用
        @LayoutRes
        private int sampleLayoutRes;
        @LayoutRes
        private int practiceLayoutRes;
    
    //2.newInstance初始化Fragment,通过方法里传递参数和Bundle。
        public static  CustomFragment newInstance(@LayoutRes int sampleLayoutRes,@LayoutRes int practiceLayoutRes){
            CustomFragment fragment = new CustomFragment();
            Bundle args = new Bundle();
            args.putInt("sampleLayoutRes",sampleLayoutRes);
            args.putInt("practiceLayoutRes",practiceLayoutRes);
            fragment.setArguments(args);
            return  fragment;
        }
    
    //3.将初始化Fragment时用Bundle传入的参数,赋值给全局变量。
        @Override
        public void onCreate(@Nullable Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            Bundle args = getArguments();
            if(null != args){
                sampleLayoutRes = args.getInt("sampleLayoutRes");
                practiceLayoutRes = args.getInt("practiceLayoutRes");
            }
        }
    
    //4.当我需要用到对应参数数据时,可以通过调用对应参数的全局变量来使用。
        @Nullable
        @Override
        public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
          View view = inflater.inflate(R.layout.fragment_page,container,false);
    
            ViewStub sampleStub = (ViewStub) view.findViewById(R.id.sampleStub);
            sampleStub.setLayoutResource(sampleLayoutRes);
            sampleStub.inflate();
    
            ViewStub practiceStub = (ViewStub) view.findViewById(R.id.practiceStub);
            practiceStub.setLayoutResource(practiceLayoutRes);
            practiceStub.inflate();
            return view;
        }
    }

    在activity里调用CustomFragment 时,就可以创建CustomFragment 对象时传递参数了。

    PageFragment.newInstance(R.layout.sample_color, R.layout.practice_color)
    展开全文
  • xamarin android Fragment实现底部导航栏

    千次阅读 2017-04-21 02:20:59
    下面的这个例子介绍xamarin android fragment实现简单的底部导航栏。 效果图和项目结构 效果图: 项目结构: 实现步骤 主要的流程就是:点击不同的菜单加载对应的fragment出来,同时菜单...

    前段时间写了篇关于Fragment的文章,介绍了基础的概念,用静态和动态的方式加载Fragment   Xamarin Android Fragment的两种加载方式。下面的这个例子介绍xamarin android fragment实现简单的底部导航栏。

    效果图和项目结构

    效果图:

    项目结构:

    实现步骤
     

    主要的流程就是:点击不同的菜单加载对应的fragment出来,同时菜单icon切换和菜单文字颜色也响应变化,是否选中是通过selected来判断的。我们需要写以下几个资源文件,文字颜色的变化,菜单图片的变化。

    step1:底部菜单资源文件

    文字颜色变化资源: tab__menu_text.xml 

    展开全文
  • 首先需要写一个Basefragment集成Fragmengt 然后自定义方法 ...public class BaseFragment extends Fragment { public void skip(View view){ view.setOnClickListener(new View.OnClickListener() { @Overri
  • 1.新建TestFragmen继承Fragment public class TestFragment extends Fragment { private static final String TAG = TestFragment; private String hello;// = hello android; private String defaultHello = ...
  • Android 中ActionBar+fragment实现页面导航的实例 为保证android2.0以上均能运行,使用support.v7库下的actionbar及fragment 继承自AppCompatActivity(ActionBarActivity已过时)使用getSupportActionBar()得到...
  • Fragment继承关系

    2019-08-08 21:24:44
    Fragment的继承关系 ...创建一个类,继承Fragment 重写父类的方法onCreateView() 在onCreateView()方法中,为Fragment创建UI界面 Java代码 ​ MyFragment类 import android.os.Bundle; import android.support.anno...
  • ActionBar+fragment实现页面导航

    千次阅读 2016-01-03 19:22:09
    继承自AppCompatActivity(ActionBarActivity已过时)使用getSupportActionBar()得到ActionBar, ActionBar.Tab,这里Tab必须设置监听,在监听中实现Fragment的切换。 这里重点提一下,Theme主题一定要适配
  • Android Fragment 使用如果使用android.support.v4....为了配合android.support.v4.app.Fragment 请Activity继承FragmentActivity 否则会报错的 //官方文档介绍 FragmentActivity is a special activity pro
  • Fragment实现懒加载

    2016-01-11 10:19:42
    应用场景:使用viewpager和fragment来展示数据,要求滑动到fragment时加载此页面的数据。...所以我们的fragment可以这样写(为了方便起见,我们写一个BaseFragment,需要实现懒加载的继承BaseFragment即可): publi
  • ViewPager+Fragment实现主页面布局 上一篇文章讲了RadioButton+Fragment实现主页面布局,这里介绍一种ViewPager+Fragment的实现方式,与上一篇的主要区别是可以滑动切换界面,非常简单实用,首先看效果。 下面来...
  • 1、fragmentactivity 继承activity,用来解决android3.0 之前没有fragment的api,所以在使用的时候需要导入support包,同时继承fragmentActivity,这样在activity中就能嵌入fragment来实现你想要的布局效果。
  • 摘要: 看现在很多app都是有像tab页嵌套tab页的效果,本来就是用的Fragment实现的,然后大神指点用TabHost的,但因为Fragment的出现已被代替。  纠结了两天,还是一个帖子让我猛然想起如何实现,帖子地址: ...
  •  使用Android 自带API实现TabHost方法:继承TabAcitivity和不继承该类两种方法:具体实现参考http://blog.csdn.net/harvic880925/article/details/17120325 二、其他组合方法:   1 单独使用ViewPa
  • Fragment实现底部菜单栏

    千次阅读 2014-02-16 12:20:13
    网上关于使用Fragment实现底部菜单栏的方法,总结一下以备后用。   1. TabHost + Activity:经典的搭配组合,从最早的TabHost + TabActivity演变而来。TabActivity灵活性很差,已经被抛弃了。 2. 自定义底部...
  • FragmentTabHost+Fragment实现底部菜单栏

    千次阅读 2017-10-14 20:27:40
    假设底部菜单栏有三个选项,所以我们要有三个Fragment,对这三个Fragment要分别实现三个Fragment继承类和三个XML文件,由于这三个都基本相同,以下只给出一个的内容 Fragment继承实现package com.example.text;...
  • 使用Fragment实现顶部菜单栏

    千次阅读 2015-03-15 14:43:03
    之前使用ViewPager+ActivityGroup实现过顶部菜单栏切换,参照http://blog.csdn.net/tan313/article/details/4174501,今天使用Fragment实现顶部菜单栏。ViewPager类似一个View容器,他...1.继承Fragment,重写onCreate
  • Fragment实现如新浪微博一样的底部菜单的切换

    万次阅读 多人点赞 2013-07-25 16:14:20
    像我这个有强迫症的人来说,自从TabActivity抛弃之后,再使用看到一个个警告...首先是MainActivity,它需要继承FragmentActivity(这里是指:版本是3.0之前的继承FragmentActivity,3.0版本之后的继承Activity就可以),
  • Android ViewPager Fragment实现选项卡

    千次阅读 2014-02-22 09:46:15
    Android ViewPager Fragment实现选项卡
  • FragmentTabHost+Fragment实现选项卡页面

    千次阅读 2016-09-13 17:31:08
    FragmentTabHost+Fragment简单实现选项卡切换。
  • Fragment实现

    2016-07-28 17:38:47
    1.静态设置Fragment 1.1新建一个Fragment的类继承Fragment 重写他的三个方法 public void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); } @Nullable @Overrid
  • ViewPager+Fragment实现多个子界面滑动

    万次阅读 2018-09-18 11:27:21
    ViewPager+Fragment实现多个子界面滑动一、设计目标二、实现方法第一步第二步第三步第四步三、实现效果四、源码链接 一、设计目标 最近做了一个智能机器人的控制APP,因为涉及的功能比较多,因此采用了三个可以滑动...
  • Android开发TabLayout和Fragment实现选项卡效果 使用TabLayout和Fragment,实现选项卡的功能 先上效果图 先写界面 main_activity.xml代码 vertical线性布局,两个控件,上面是选项卡,下面用于显示内容 &...
  • 在开发过程中,经常会用到ViewPager与Fragment实现多页面切换效果,有时,我们想要局部刷新某些Fragment,而其他Fragment保持状态不变,该如何做到呢? 先上代码!/** * Created by HSH . */ public abstract ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 34,041
精华内容 13,616
关键字:

继承自fragment实现