Android 如何添加选项卡&;动态碎片
如何动态添加选项卡和片段 我的代码:Android 如何添加选项卡&;动态碎片,android,tabs,android-design-library,android-tablayout,androiddesignsupport,Android,Tabs,Android Design Library,Android Tablayout,Androiddesignsupport,如何动态添加选项卡和片段 我的代码: private void setupViewPager(ViewPager viewPager) { ViewPagerAdapter adapter = new ViewPagerAdapter(getSupportFragmentManager()); for (int i = 0; i < 4; i++) { adapter.addFrag(new TabFragment(), "Tab"+i); }
private void setupViewPager(ViewPager viewPager) {
ViewPagerAdapter adapter = new ViewPagerAdapter(getSupportFragmentManager());
for (int i = 0; i < 4; i++) {
adapter.addFrag(new TabFragment(), "Tab"+i);
}
viewPager.setAdapter(adapter);
}
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);
}
}
}
假设我的选项卡名为“Tab1,Tab2,Tab3”
如果我在上面看到了,我如何根据数组动态添加选项卡,以及如何知道选择了哪个选项卡
欢迎提出任何建议
提前感谢:)
活动:
公共类MainActivity扩展了AppCompatActivity{
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initViews();
}
int icons[]={R.mipmap.createuser,R.mipmap.ico_密码,R.mipmap.gplus,R.mipmap.fb};
int colors[]={Color.YELLOW,Color.CYAN,Color.LTGRAY,Color.CYAN};
void initViews(){
TabLayout tabs=(TabLayout)findViewById(R.id.slideing_tabs);
ViewPager pager=(ViewPager)findViewById(R.id.ViewPager);
LayoutFlater充气器=(LayoutFlater)getSystemService(Context.LAYOUT\u充气器\u服务);
ArrayList fragments=newArrayList(Arrays.asList(new Fragment1()、new Fragment2()、new Fragment3()、new Fragment4());
ViewPagerAdapter适配器=新的ViewPagerAdapter(getSupportFragmentManager(),片段);
寻呼机设置适配器(适配器);
选项卡。使用查看寻呼机(寻呼机)进行设置;
对于(int i=0;i<4;i++){
视图=充气机充气(右布局选项卡,空,假);
TextView title=(TextView)view.findViewById(R.id.title);
RelativeLayout=(RelativeLayout)view.findViewById(R.id.layout);
ImageView图标=(ImageView)view.findViewById(R.id.icon);
标题.setText(“制表符”+i);
布局.背景颜色(颜色[i]);
icon.setImageResource(icons[i]);
//tabs.getTabAt(i).setCustomView(视图);
tabs.getTabAt(i).setIcon(icons[i]);
}
}
@凌驾
公共布尔onCreateOptions菜单(菜单){
//为菜单充气;这会将项目添加到操作栏(如果存在)。
getMenuInflater().充气(右菜单菜单菜单主菜单);
返回true;
}
@凌驾
公共布尔值onOptionsItemSelected(菜单项项){
//处理操作栏项目单击此处。操作栏将
//自动处理Home/Up按钮上的点击,只要
//在AndroidManifest.xml中指定父活动时。
int id=item.getItemId();
//noinspection SimplifiableIf语句
if(id==R.id.action\u设置){
返回true;
}
返回super.onOptionsItemSelected(项目);
}
}
适配器:
导入android.support.v4.app.Fragment;
导入android.support.v4.app.FragmentManager;
导入android.support.v4.app.FragmentPagerAdapter;
导入java.util.List;
/**
*由rohit.h于2015年12月21日创建。
*/
公共类ViewPagerAdapter扩展了FragmentPagerAdapter{
字符串标题[]={“Tab1”、“Tab2”、“Tab3”、“Tab4”};
私人最终名单碎片;
public ViewPagerAdapter(碎片管理器fm,列出碎片){
超级(fm);
this.fragments=片段;
}
@凌驾
公共片段getItem(int位置){
返回碎片。获取(位置);
}
@凌驾
public int getCount(){
返回fragments.size();
}
@凌驾
公共字符序列getPageTitle(int位置){
返回标题[职位];
}
}
活动:
公共类MainActivity扩展了AppCompatActivity{
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initViews();
}
int icons[]={R.mipmap.createuser,R.mipmap.ico_密码,R.mipmap.gplus,R.mipmap.fb};
int colors[]={Color.YELLOW,Color.CYAN,Color.LTGRAY,Color.CYAN};
void initViews(){
TabLayout tabs=(TabLayout)findViewById(R.id.slideing_tabs);
ViewPager pager=(ViewPager)findViewById(R.id.ViewPager);
LayoutFlater充气器=(LayoutFlater)getSystemService(Context.LAYOUT\u充气器\u服务);
ArrayList fragments=newArrayList(Arrays.asList(new Fragment1()、new Fragment2()、new Fragment3()、new Fragment4());
ViewPagerAdapter适配器=新的ViewPagerAdapter(getSupportFragmentManager(),片段);
寻呼机设置适配器(适配器);
选项卡。使用查看寻呼机(寻呼机)进行设置;
对于(int i=0;i<4;i++){
视图=充气机充气(右布局选项卡,空,假);
TextView title=(TextView)view.findViewById(R.id.title);
RelativeLayout=(RelativeLayout)view.findViewById(R.id.layout);
ImageView图标=(ImageView)view.findViewById(R.id.icon);
标题.setText(“制表符”+i);
布局.背景颜色(颜色[i]);
icon.setImageResource(icons[i]);
//tabs.getTabAt(i).setCustomView(视图);
tabs.getTabAt(i).setIcon(icons[i]);
}
}
@凌驾
公共布尔onCreateOptions菜单(菜单){
//为菜单充气;这会将项目添加到操作栏(如果存在)。
getMenuInflater().充气(右菜单菜单菜单主菜单);
返回true;
}
@凌驾
公共布尔值onOptionsItemSelected(菜单项项){
//处理操作栏项目单击此处。操作栏将
//自动处理Home/Up按钮上的点击,只要
//在AndroidManifest.xml中指定父活动时。
int id=item.getItemId();
//noinspection SimplifiableIf语句
if(id==R.id.action\u设置){
返回true;
}
返回super.onOptionsItemSelected(项目);
}
}
适配器:
导入android.support.v4.app.Fragment;
导入android.support.v4.app.FragmentManager;
导入android.support.v4.app.FragmentPagerAdapter;
导入java.util.List;
/**
*由rohit.h于2015年12月21日创建。
*/
公共类ViewPagerAdapter扩展
public class TabFragment extends ListFragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.activty_listview,container, false);
listView = (ListView) rootView.findViewById(android.R.id.list);
return rootView;
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
}
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<android.support.design.widget.TabLayout
android:id="@+id/sliding_tabs"
android:layout_width="fill_parent"
app:tabMode="fixed"
android:background="#ff0000"
app:tabGravity="fill"
android:layout_height="48dp" />
<android.support.v4.view.ViewPager
android:id="@+id/viewpager"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:layout_below="@+id/sliding_tabs"
android:background="@android:color/white" />
</RelativeLayout>
Activity:
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initViews();
}
int icons[] = {R.mipmap.createuser, R.mipmap.ico_password, R.mipmap.gplus, R.mipmap.fb};
int colors[] = {Color.YELLOW, Color.CYAN, Color.LTGRAY, Color.CYAN};
void initViews() {
TabLayout tabs = (TabLayout) findViewById(R.id.sliding_tabs);
ViewPager pager = (ViewPager) findViewById(R.id.viewpager);
LayoutInflater inflator = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
ArrayList<Fragment> fragments = new ArrayList<>(Arrays.asList(new Fragment1(),new Fragment2(),new Fragment3(),new Fragment4()));
ViewPagerAdapter adapter = new ViewPagerAdapter(getSupportFragmentManager(),fragments);
pager.setAdapter(adapter);
tabs.setupWithViewPager(pager);
for (int i = 0; i < 4; i++) {
View view = inflator.inflate(R.layout.tabs,null,false);
TextView title = (TextView)view.findViewById(R.id.title);
RelativeLayout layout = (RelativeLayout)view.findViewById(R.id.layout);
ImageView icon = (ImageView)view.findViewById(R.id.icon);
title.setText("Tab" + i);
layout.setBackgroundColor(colors[i]);
icon.setImageResource(icons[i]);
// tabs.getTabAt(i).setCustomView(view);
tabs.getTabAt(i).setIcon(icons[i]);
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
}
Adapter:
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import java.util.List;
/**
* Created by rohit.h on 12/21/2015.
*/
public class ViewPagerAdapter extends FragmentPagerAdapter {
String titles[] = {"Tab1", "Tab2", "Tab3", "Tab4"};
private final List<Fragment> fragments;
public ViewPagerAdapter(FragmentManager fm, List<Fragment> fragments) {
super(fm);
this.fragments = fragments;
}
@Override
public Fragment getItem(int position) {
return fragments.get(position);
}
@Override
public int getCount() {
return fragments.size();
}
@Override
public CharSequence getPageTitle(int position) {
return titles[position];
}
}
mTabLayout = (TabLayout)rootView.findViewById(R.id.tab_layout);
mTabLayout.addTab(mTabLayout.newTab().setText(getResources().getString(R.string.tab1)));
mTabLayout.addTab(mTabLayout.newTab().setText(getResources().getString(R.string.tab2)));
mTabLayout.addTab(mTabLayout.newTab().setText(getResources().getString(R.string.tab3)));
mTabLayout.addTab(mTabLayout.newTab().setText(getResources().getString(R.string.tab4)));
mTabLayout.addTab(mTabLayout.newTab().setText(getResources().getString(R.string.tab5)));
mTabLayout.setTabGravity(TabLayout.GRAVITY_FILL);
mTabLayout.setTabMode(TabLayout.MODE_SCROLLABLE);
mViewPager = (ViewPager)rootView.findViewById(R.id.pager);
mPagerAdapter = new PagerAdapter
(getActivity().getSupportFragmentManager(), mTabLayout.getTabCount());
mViewPager.setAdapter(mPagerAdapter);
mViewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(mTabLayout));