我在我的应用程序中使用PagerTitleStrip是currentky (文件:http://developer.android.com/reference/android/support/v4/view/PagerTitleStrip.html)
一切正常,我设置了这样的标题:
public class PageAdapter extends FragmentPagerAdapter {
private List<Fragment> fragments;
public PageAdapter(FragmentManager fm, List<Fragment> fragments) {
super(fm);
this.fragments = fragments;
}
@Override
public Fragment getItem(int position) {
return this.fragments.get(position);
}
@Override
public int getCount() {
return this.fragments.size();
}
String[] titles = { "1", "2", "3", "4","5" };
@Override
public CharSequence getPageTitle(int position) {
return titles[position];
}
}
我现在关注的是,一旦第一个Fragment完成加载,我就必须更改条带的标题。
我已经尝试获取FragmentPagerAdapter并尝试操作它,但从未成功更改标题(文本)
确实有一个getPageTitle方法:mPagerAdapter.getPageTitle(position)但没有setPageTitle ...
有任何想法或建议吗?
答案 0 :(得分:11)
如果我正确理解问题 - 您稍后会获得数据,然后想要更新titles数组并触发标题刷新。
如果是这种情况,只需触发PagerAdapter.notifyDataSetChanged()
;在调用该方法之后,Fragments将调用getPageTitle方法并自行更新。
答案 1 :(得分:-1)
有点丑陋的解决方案但工作:迭代到可视化树并自己设置文本。
此外,您必须注意左侧有第一个透明/空白项。
以下是更新第一个标题的代码(Xamarin)。
var firstHidedOneFound = false;
for (int i = 0; i < _tabstrip.ChildCount; ++i)
{
var child = _tabstrip.GetChildAt(i) as TextView;
if (child == null) { continue; }
if (!firstHidedOneFound)
{
firstHidedOneFound = true;
continue;
}
child.Text = ViewModel.MyShowPanelTitle;
break;
}