Android TabLayout标题本地化不起作用

时间:2019-02-03 20:17:08

标签: android android-tablayout

我有带有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>

1 个答案:

答案 0 :(得分:1)

我有同样的问题。 2分钟前,我能够修复它。创建MainViewPagerAdapter时,您是否会像这样?

    MainViewPagerAdapter mvpa = 
new MainViewPagerAdapter(fm, getApplicationContext(), liveFragment, mapFragment);

我认为应用程序上下文会使用您的默认语言(在我的情况下为电话lang)。 只需尝试给活动上下文类似:new MainViewPagerAdapter(fm, this, ...

现在有人可以在注释中告诉“对活动上下文的链接不好,而更好地使用应用程序上下文”,所以要小心:-)