9

Android 4.2ではRTL(BiDi)サポートが導入されました。使用を開始するには、指示に従います(マニフェストファイルの要素にandroid:supportsRtl属性を設定し、「true」に設定します)。

しかし、その後、私のActionBarロゴも右に向きを変えます(ロゴは右に表示されます)。これは私が望まないことです。RTL機能を使用したいのですが、ActionBarを左に向けたままにします...

言い換えると、言語の方向がRTLの場合、Android 4.2でActionBarの方向を変更せずにandroid:supportsRtl属性を使用するにはどうすればよいですか?

助言がありますか ?

4

2 に答える 2

12

同じ問題が発生しましたが、slidingMenu(別名ナビゲーションドロワー)があるため、さらに奇妙になりました(右上の[上]ボタンをクリックして、左側にドロワーを表示することを意味します...)。

2つの可能な解決策があります:

  1. コード別、各アクティビティで:

    if (VERSION.SDK_INT >= VERSION_CODES.JELLY_BEAN_MR1)
        getWindow().getDecorView().setLayoutDirection(View.LAYOUT_DIRECTION_LTR);
    
  2. テーマ別。独自にカスタマイズしたテーマを編集し、正しい行を追加します。例:

    <style name="AppTheme" parent="@style/Theme.Sherlock.Light">
      <item name="actionBarStyle">@style/CustomActionBarStyle</item>
      <item name="android:actionBarStyle" tools:targetApi="honeycomb">@style/CustomActionBarStyle</item>
    </style>
    
    <style name="CustomActionBarStyle" parent="@style/Widget.Sherlock.Light.ActionBar">
      <item name="android:layoutDirection" tools:targetApi="jelly_bean_mr1">ltr</item>
    </style>
    
于 2013-12-19T15:39:28.253 に答える
3

まず、申し訳ありませんが、RTLモードの場合、ActionBarはミラーリングする必要があります。この点は、bidi/rtlの専門家によってチェックおよび検証されています。android:supportsRtl = trueを設定すると、アプリはRTLレイアウトミラーリングをサポートする用意があります。そうすると、ActionBar(すべてのAndroid Frameworkウィジェットと同様)がミラーリングされます。これは、LTR方向に表示しても意味がないためです。

第二に、左上または右上のメニューにアクセスするための画面サイズと人間工学の問題に関するあなたの議論は、RTLサポートとは関係ありません。LTRモードでこのような問題が発生した場合は、RTLモードでもまったく同じ問題が発生します。これは画面サイズにのみ関係します。

第三に、すべてのAndroidUIFrameworkウィジェットはネイティブにRTLミラーリングをサポートしています。問題を見つけた場合は、公開バグ追跡システムにバグを報告してください。

第4に、Google AppsはRTLレイアウトをサポートし、必要に応じてこれらの新しいパブリックRTLAPIを使用します。これは、Androidフレームワークのサポートとは完全に切り離されています。RTLをサポートする最初のアプリは設定アプリでした(まだRTLを認識していないプロバイダーの一部を法として)。

第五に、バックポートに関しては、この機能をサポートライブラリに入れるべきか、それとも古いAndroidリリースに入れるべきかについて話していると思います。古いAndroidリリースの場合、コードベースがフリーズしているため、これを行うことはできません。サポートライブラリの場合、ビューやその他の基本的なウィジェットコンポーネントを変更する必要があったため、これを行うことはできません。

最後に、問題を見つけたと思われる場合、または不足している可能性のあるものについて機能要求を提出する場合は、より建設的にアプローチしてバグレポートを提出してください。

于 2013-03-05T14:05:53.033 に答える