如何使用片段自定义选项卡



我只想将应用程序上的选项卡自定义为带有选择器的图片或我需要开始的东西? 这是我的代码。现在我的应用程序带有常规的黑色和蓝色选项卡,但我想对其进行自定义

我该怎么办? 这是我的代码:

A类

  public class ListFragment extends Fragment{
        basAdapterCustom adapter;
        ListView lv;
        ArrayList<Clock> list;
        private DbHandler hand;
        Context context;
        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                Bundle savedInstanceState) {
            View v = inflater.inflate(R.layout.list_fragment, container, false);
            context = getActivity();
            Log.d(TAG, "onCreateView");
            hand = new DbHandler(context);
            list = new ArrayList<Clock>();
            lv = (ListView) v.findViewById(R.id.listOfShifts);
            adapter = new basAdapterCustom(list, getActivity());
            lv.setAdapter(adapter);
            refreshList();
            return v;
        }

        //like on "resume":
        @Override
        public void setUserVisibleHint(boolean isVisibleToUser) {
            super.setUserVisibleHint(isVisibleToUser);
            // Make sure that we are currently visible
            if (this.isVisible()) {
                refreshList();
                if (!isVisibleToUser) {
                    // TODO stop
                }
            }
        }

        private void refreshList() {
            list = hand.getByWorkName();
            adapter = new basAdapterCustom(list,getActivity());
            lv.setAdapter(adapter);
        }

B类:

public class ClockFragment extends Fragment{

    DbHandler hand;

    Context context;
    @Override
    public View onCreateView(LayoutInflater inflater,
            @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View v = inflater.inflate(R.layout.clock, container,false);
        context = getActivity();
        hand = new DbHandler(context);
        return v;
    }

    // ADD to .Db
    public void addToDb(View v){
        hand.add(new Clock(0, dateDay));    
    }

}

类主活动:

public class MainActivity extends FragmentActivity implements ActionBar.TabListener, OnPageChangeListener{
    public static final String TAG = "myClock";
    String[] tabMenu = {"FRAG A","FRAG B","FRAG C"};
    private ViewPager viewPager;
    private TabPagerAdapter mAdapter;
    private ActionBar actionBar;

    @SuppressLint("NewApi")
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);


        Log.d(MainActivity.TAG, "OnCreate = MainActivity (Pager");
        viewPager = (ViewPager) findViewById(R.id.pager );
        actionBar = getActionBar();
        mAdapter = new TabPagerAdapter(getSupportFragmentManager());
        viewPager.setAdapter(mAdapter);
        actionBar.setHomeButtonEnabled(false);
        actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
        for (String tabsNames : tabMenu) {
            actionBar.addTab(actionBar.newTab().setText(tabsNames).setTabListener(this));
        }
        viewPager.setOnPageChangeListener(this);
    }
    //  public void transDialog(){
    //      Dialog mDialog = new Dialog(this, android.R.style.Theme_Translucent_NoTitleBar_Fullscreen);
    //  }


    @Override
    public void onTabSelected(Tab tab, FragmentTransaction ft) {
        viewPager.setCurrentItem(tab.getPosition());
    }
    @Override
    public void onTabUnselected(Tab tab, FragmentTransaction ft) {
        // TODO Auto-generated method stub
    }
    @Override
    public void onTabReselected(Tab tab, FragmentTransaction ft) {
    }


    @Override
    public void onPageScrollStateChanged(int arg0) {        
    }

    @Override
    public void onPageScrolled(int arg0, float arg1, int arg2) {
    }

    @Override
    public void onPageSelected(int position) {
        actionBar.setSelectedNavigationItem(position);      
    }
}

PagetAdapter.class

public class TabPagerAdapter extends FragmentPagerAdapter {
    private static final String TAG = "myClock";

    public TabPagerAdapter(FragmentManager fm) {
        super(fm);
        // TODO Auto-generated constructor stub
    }
    @Override
    public Fragment getItem(int index) {
        Log.d(TAG, " CLASS : TabPagerAdapter");
        switch (index) {
        case 0:
            return new ListFragment();
        case 1:
            return new ClockFragment();
        case 2:
            return new SettingFragment();
        default:
            break;
        }       
        Log.d(TAG, " CLASS : TabPagerAdapter = "+index);
        return null;
    }

    @Override
    public int getCount() {
        return 3;
    }
}
for (String tabsNames : tabMenu) {
    actionBar.addTab(actionBar.newTab().setText(tabsNames).setTabListener(this));
}

将其更改为:

for (String tabsNames : tabMenu) {
    actionBar.addTab(actionBar.newTab().setText(tabsNames).setTabListener(this).setIcon(resources.getDrawable(<drawable_id>));
}

也许,您应该首先创建一个带有可绘制 id 的数组,然后在"for"循环中获取类似 .setIcon(resources.getDrawable(icons[i]) 的 id

如果您已经将图标的可绘制对象放入相应的文件夹中,您可以给我它们的名称,我将向您展示完整的代码。

最新更新