我有带有ViewPager的TabLayout,并且我只有两个标签:
表
地图
我在应用程序中支持多种语言,例如:
英语
德语
塞尔维亚语
因此,由于大多数用户都是塞尔维亚语,因此我将塞尔维亚语用作默认语言。但是,如果我改用其他语言,则除了“表”和“地图”选项卡外,其他所有内容均已正确定位,因为它们始终在塞尔维亚语中。
可能是什么问题?
English:
<string name="tab_map">MAP</string>
<string name="username">Username</string>
German:
<string name="tab_table">TABELLE</string>
<string name="tab_map">MAPA</string>
Serbian:
<string name="tab_table">TABELA</string>
<string name="tab_map">MAPA</string>
这是TabLayout的适配器:
public class MainViewPagerAdapter extends FragmentStatePagerAdapter {
private Context context;
private LiveFragment liveFragment;
private MapFragment mapFragment;
public MainViewPagerAdapter(FragmentManager fm, Context context, LiveFragment liveFragment, MapFragment mapFragment) {
super(fm);
this.context = context;
this.liveFragment = liveFragment;
this.mapFragment = mapFragment;
}
@Override
public Fragment getItem(int position) {
switch (position){
case 0: return liveFragment;
case 1: return mapFragment;
}
return null;
}
@Override
public CharSequence getPageTitle(int position) {
return getPagerTitles()[position];
}
@Override
public int getCount() {
return getPagerTitles().length;
}
@NonNull
private CharSequence[] getPagerTitles() {
return new CharSequence[]{context.getString(R.string.tab_table), context.getString(R.string.tab_map)};
}
}
<android.support.design.widget.TabLayout
android:id="@+id/tabs"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/toolbar"
app:tabMode="fixed"
app:tabTextColor="@color/colorPrimary"
app:tabTextAppearance="@style/TextAppearance.FontPath"
android:background="@color/white"
app:tabSelectedTextColor="@color/colorAccent"
app:tabIndicatorHeight="3dp"
android:elevation="0dp"
app:tabGravity="fill"/>
<android.support.v4.view.ViewPager
android:id="@+id/pager"
android:background="@color/white"
android:layout_height="match_parent"
android:layout_width="match_parent"
android:layout_weight="1"
android:layout_below="@+id/tabs"></android.support.v4.view.ViewPager>
答案 0 :(得分:1)
我有同样的问题。 2分钟前,我能够修复它。创建MainViewPagerAdapter时,您是否会像这样?
MainViewPagerAdapter mvpa =
new MainViewPagerAdapter(fm, getApplicationContext(), liveFragment, mapFragment);
我认为应用程序上下文会使用您的默认语言(在我的情况下为电话lang)。
只需尝试给活动上下文类似:new MainViewPagerAdapter(fm, this, ...
现在有人可以在注释中告诉“对活动上下文的链接不好,而更好地使用应用程序上下文”,所以要小心:-)