2014-05-09 72 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語句,但用它來確定語言沒有設置它們全部使用相同的偵聽器 –