根据语言开放活动

时间:2014-05-09 14:59:41

标签: android xml class android-layout android-intent

我有一个支持不同语言的应用。但是我有一个布局文件,无论语言是什么我都想使用 这种布局有几个按钮,可以打开不同的活动,但需要按字母顺序排列 即汽车(英国) - 汽车(德) 英文版按钮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

2 个答案:

答案 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);