2014-05-09 37 views
0

我有一个支持不同语言的应用程序。不过,无论使用何种语言,我都有1个布局文件。
这个布局有几个按钮可以打开不同的活动,但它需要按字母顺序排列。
即车(eng) - 自动(de) 英文版按钮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

回答

1

您可以使用相同的Activity类,并为每种语言使用不同的布局或片段XML。请参见this page上的“设计灵活布局”部分。正如它所说的那样,为了确保所有这些布局文件都保持更新,这将是额外的工作。如果您打算支持多种语言,则可以考虑以编程方式添加按钮。那么你只需要更新每种语言的字符串。请参阅this thread

+0

感谢 - 但我读过,但不能看到任何地方文件说或指向我的方向使用1布局文件,并取决于语言将取决于哪个按钮做什么,除非我从该链接丢失的东西? –

+0

我建议你使用几个布局文件,例如'res/layout-de/main.xml','res/layout-en/main.xml'等。这个Activity完全不知道按钮的位置屏幕,所以相同的Activity可以用于所有的布局。根据设备上的区域设置自动选择正确的布局。 –

+0

我可能真的去编程添加按钮,因为我所有的字符串都完成 –

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); 
+0

谢谢 - 我使用的是if语句,但用它来确定语言没有设置它们全部使用相同的侦听器 –