我有一个支持不同语言的应用。但是我有一个布局文件,无论语言是什么我都想使用 这种布局有几个按钮,可以打开不同的活动,但需要按字母顺序排列 即汽车(英国) - 汽车(德) 英文版按钮3将打开汽车活动,但德语版按钮1将打开汽车活动。我如何确保这种情况发生,或者我是否必须根据语言创建不同的活动? 布局文件:
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="72dp"
android:orientation="horizontal" >
<Button
android:id="@+id/btnButton1"
android:layout_width="72dp"
android:layout_height="72dp"
android:layout_marginTop="20dp"
android:layout_marginLeft="25dp"
android:text="1" />
<Button
android:id="@+id/btnButton2"
android:layout_width="72dp"
android:layout_height="72dp"
android:layout_toRightOf="@+id/btnButton1"
android:layout_alignBottom="@+id/btnButton1"
android:layout_marginLeft="5dp"
android:text="2"/>
<Button
android:id="@+id/btnButton3"
android:layout_width="72dp"
android:layout_height="72dp"
android:layout_toRightOf="@+id/btnButton2"
android:layout_alignBottom="@+id/btnButton2"
android:layout_marginLeft="5dp"
android:text="3"/>
</RelativeLayout>
有按钮的类:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Locale.getDefault();
setContentView(R.layout.activity_animal_choice);
btnButton1 = (Button) findViewById(R.id.btnButton1);
btnButton1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(Menu.this, Car.class);
startActivity(intent);
}
});
很高兴看到这是否可能,如果不是,它可能会更快更轻松地为每种语言创建不同的apk
答案 0 :(得分:1)
您可以使用相同的Activity类,并为每种语言使用不同的布局或片段XML。请参阅&#34;设计灵活布局&#34;在this page。正如它所说,确保所有这些布局文件保持更新将是额外的工作。如果您计划支持多种语言,可以考虑以编程方式添加按钮。然后,您只需更新每种语言的字符串。请参阅this thread。
答案 1 :(得分:0)
您需要为所有按钮提供相同的OnClickListener,并在该侦听器中检查按钮的文本是什么,如:
OnCLickListener listener = new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent();
if (v.getText().equals(getString(R.string.car)) {
intent.setClass(Menu.this, Car.class);
}
else if (v.getText().equals(getString(R.string.whatever)) {
intent.setClass(Menu.this, Whatever.class);
}
// ...
startActivity(intent);
}
});
button1.setOnClickListener(listener);
button2.setOnClickListener(listener);
button3.setOnClickListener(listener);