2013-07-07 32 views
14

右から左に特定の言語のアンドロイドアプリを作成しています。私はActionBarSherlock(互換性のあるアンドロイドアクションバーライブラリ)を使用しています。
私が欲しいのは、ユーザーがRTL言語のデフォルトのロケールを設定しなくても、RTLにアクションバーの方向を変更する方法です。
誰かが標準的なアンドロイドのアクションバーでもアイデアを持っているなら、それは価値があり、共有してください。
ありがとうございましたアクションバーの方向を右から左に変更する

+0

であなたは解決策を見つけましたか? –

+0

私は良い解決策を見いだすことはできませんでしたが、私はまだ 'RTLizer'についての 'semsamot'の解決策をテストしていません。 テストしたら、それについて教えてください。ありがとう。 – Aliaaa

答えて

1

私はあなたが求めていることをすることができないと確信しています。 ActionBarパターンは非常に限定されており、それをサポートするライブラリは定義されたパターンのみをサポートします(アイコンは左上にあり、次にタイトルをレイアウトし、アクションボタンは右に配置します)。

あなたのアプリ内のロケールとテキストを変更するだけで簡単にテストを変更することができます。

ActionBar内の要素の位置の変更は、サポートされているUIパターンではないため、標準のActionBarパターンをサポートするライブラリではサポートされません。

私はABを現状のままにしておくべきだと思います。いずれにしても右向きの向きがないため、順序を切り替える必要はありません。また、これを変更すると、ユーザーにとって非常に不快感があります。

ボトムラインでは、既存のライブラリではこれを行うことができません。とにかくそうしないでください。

+0

しかし、他の人がこれをよく見ています。 https://play.google.com/store/apps/details?id=com.hamrahyar.nabzebazaar – Aliaaa

+0

私は、カスタムレイアウトを使用してこれを作成しています要素そのもの。私はネイティブ(またはActionBarSherlock)の実装は、この時点でこれをサポートしていないと思います(誰かが別の答えを持っているかどうかを確認します)。 – Booger

+0

@Booger今は可能です! (私の答えを参照してください) – semsamot

52

Android APIレベル17+以降、ネイティブでRTLをサポートしています。あなたのレイアウト全体を強制的にActionBarを含むRTLにするには、次のようにします。

編集しAndroidManifest.xmlをし、あなたの<application>タグにandroid:supportsRtl="true"を追加し、あなたの活動のonCreate()メソッドforceRTLIfSupported();の先頭に次の行を追加して、あなたの活動へのフォロー機能を挿入します。

@TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR1) 
private void forceRTLIfSupported() 
{ 
    if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1){ 
     getWindow().getDecorView().setLayoutDirection(View.LAYOUT_DIRECTION_RTL); 
    } 
} 

もちろん、デバッグにのみ役立ちます。プロダクションビルドにはView.LAYOUT_DIRECTION_LOCALEを使用してください。ユーザが選択したシステムロケーション/言語ロケールがRTLをサポートしている場合にのみレイアウトが変更されます。

希望に役立ちます。

+1

あなたの答えに感謝します。しかし、答えが存在する場合は、より低いsdkバージョンの互換性サポートのための答えが必要です! – Aliaaa

+0

ありがとうございました。 –

+1

残念ながら、RTLのすべてのレイアウトです。私はアクションバーの方向をすべてのアプリケーションに変更する必要はありません。私は何ができますか? – Kenji

2

ブーゴーです。あなたが言及した "Nabz Bazar"アプリは、アンドロイドのすべてのバージョンで右に揃っていません。見ての通り、here ABSはAndroid 4.0以降ではまったく何もしません。そのアプリのスクリーンショットは4.2アンドロイドにあります。

5

我々はプログラミングで強力なルールを信じなければならない:あなたのツールを知っているとき

すべてが可能になります。

だから、今からあなたはこのライブラリを使用することができ、本当にRTLizeあなたactionbarsへ: https://github.com/semsamot/ActionBarRTLizer

そしてもちろん、それはAPIレベル7+と互換性があります。

+0

*シンボル 'ActionBarRtlizer'を解決できません*(この問題を解決するために何をインポートすべきかを忘れてしまったと思います) –

0

使用この、それはRTLからレイアウトを作ることになるが、これはあなたのXMLの親ルート

android:layoutDirection="rtl" 
    android:textDirection="rtl" 
関連する問題