我有一个针对SDK版本25和最低SDK 17的android应用。该应用应以4种语言提供:法语,斯瓦希里语,< strong>英语和基隆迪。
但是对于某些android设备,当用户切换到 Kirundi 时,所有四种语言都可以正常工作,但对于另一些语言,所有其他语言都可以工作。
这是我的代码:
public class LanguageSwitcher extends AppCompatActivity {
//Variables declaration
private TextView bdi,en,fr,sw;
private Resources res;
private DisplayMetrics dm;
android.content.res.Configuration conf;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_language_switcher);
bdi = (TextView)findViewById(R.id.bdi); //Kirundi textview
fr = (TextView)findViewById(R.id.fr); //francais textview
en = (TextView)findViewById(R.id.en); //english textview
sw = (TextView)findViewById(R.id.sw); //swahili textview
res = getResources();
dm = res.getDisplayMetrics();
conf= res.getConfiguration();
//getting the sharedPreferences
SharedPreferences sharedPreferences=getSharedPreferences("profile", Context.MODE_PRIVATE);
String lang = sharedPreferences.getString("lang","");
final SharedPreferences.Editor editor = sharedPreferences.edit();
bdi.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
conf.locale = new Locale("rn"); // API 17+ only.
editor.putString("lang","rn");
editor.apply();
res.updateConfiguration(conf, dm);
startActivity(new Intent(getApplicationContext(),Acceuil.class));
}
});
fr.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
conf.locale = new Locale("fr"); // API 17+ only.
editor.putString("lang","fr");
editor.apply();
res.updateConfiguration(conf, dm);
startActivity(new Intent(getApplicationContext(),Acceuil.class));
}
});
sw.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
conf.locale = new Locale("sw"); // API 17+ only.
editor.putString("lang","sw");
editor.apply();
res.updateConfiguration(conf, dm);
startActivity(new Intent(getApplicationContext(),Acceuil.class));
}
});
en.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
conf.locale = new Locale("en"); // API 17+ only.
editor.putString("lang","en");
editor.apply();
res.updateConfiguration(conf, dm);
startActivity(new Intent(getApplicationContext(),Acceuil.class));
}
});
}
}
我不知道我的代码哪里有问题。我需要你的帮助
答案 0 :(得分:1)
我们可以使用自定义字体。它们可以是Downloadable Fonts,也可以是Fonts in XML
您可以使用this link来获取有关如何在Android App中将字体集成为XML的更多信息。
基本上,我们可以在应用程序本身中提供ttf
或otf
文件,以便我们可以在应用程序中使用字体,而不必依赖OEM字体。
在Android Developer网站上查看分步指南的链接。
答案 1 :(得分:0)
在onCreate()之前设置您的语言 或super.onCreate()
答案 2 :(得分:0)
我进行了一些研究,发现与其他语言不同,基隆迪资源应位于res/values-rn-rBI
文件夹下,而不是res/values-rn
文件夹下。 rn
为 ISO 639-1 语言代码,就像Android中的任何其他语言一样,BI
为 ISO 3166-1 Alpha-2代码国家(布隆迪),并且行之有效。