あなたがLCDUIを使用していると仮定すると、デフォルトでStringItems
などに電話機のロケールに基づいたデフォルトのレイアウトが与えられます。すなわちItem.LAYOUT_DEFAULT
の場合、en_US
ロケールの電話機は左から右のアイテムを表示し、ar_EG
ロケールの電話機は右から左のテキストを表示します。
setLayout()
機能を使用してテキストを正当化右に力レイアウトが可能です:
StringItem myStringItem = new StringItem("Title", "The text I want to display", Item.PLAIN);
myStringItem.setLayout(Item.LAYOUT_RIGHT);
append(myStringItem);
あなたは簡単に使用する値とフラグを保持することができシングルトンSettings
クラスを作成することができます
myStringItem.setLayout(Settings.getInstance().getJustification());
これもで行うことができます。レイアウトなどを設定するときに正当化(Item.LAYOUT_LEFT
またはItem.LAYOUT_RIGHT
)、およびそれを呼び出しますあなたが望むなら、コンストラクタ。
低レベルのためにGraphics
drawString()
方法を用いることができ、変更されたテキストの方向が、あなたはあなたのテキストの右上から開始点を計算する必要がありますトップは
if (Settings.getInstance().getJustification() != Item.LAYOUT_RIGHT) {
g.drawString("Some Text", x + TEXT_MARGIN , y ,Graphics.TOP | Graphics.LEFT);
} else {
// Arabic rendering of menu items - getWidth() is the maximum length
// of the line
g.drawString("Some Arabic Text", x + getWidth() - TEXT_MARGIN, y ,
Graphics.TOP | Graphics.RIGHT);
}
を残していませんあなたが既に拒否した最も簡単な解決策は、全体を通してItem.LAYOUT_DEFAULT
を使用して電話のロケールを変更することですが、低レベルのグラフィックを使用する場合は、まだdrawString()
の上書きを使用する必要があります。
static final String[] RIGHT_TO_LEFT = {
"ar", // Arabic
"az", // Azerbaijani
"he", // Hebrew
"jv", // Javanese
"ks", // Kashmiri
"ml", // Malayalam
"ms", // Malay
"pa", // Panjabi
"fa", // Persian
"ps", // Pushto
"sd", // Sindhi
"so", // Somali
"tk", // Turkmen
"ug", // Uighur
"ur", // Urdu
"yi" // Yiddish
};
public static int getJustification(String locale) {
for (int index = 0; index < RIGHT_TO_LEFT.length; index++) {
if (locale.indexOf(RIGHT_TO_LEFT[index]) != -1) {
return Item.LAYOUT_RIGHT;
}
}
return Item.LAYOUT_DEFAULT;
}
サイドノート:
は、私がこのような機能にSystem.getProperty("microedition.locale")
を使用して入力ロケールを入力し、正しい正当性を確認します。ターゲットデバイスが[JSR 238](http://jcp.org/ja/jsr/detail?id=238 "J2ME Mobile Internationalization API")_Mobile I18N API_をサポートしている場合は、他のオプションもあります – gnat