gpt4 book ai didi

java - 如何使用 fragment 自定义选项卡?

转载 作者:太空宇宙 更新时间:2023-11-04 14:37:28 25 4
gpt4 key购买 nike

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

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

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));

}


}

类mainActivity:

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

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

关于java - 如何使用 fragment 自定义选项卡?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25386215/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com