android - Android 所有 API 级别的 RTL 支持

标签 android right-to-left

我想在我的 Android 应用程序中启用 RTL 支持。我查过这个问题change action bar direction to right-to-left

我做了以下事情:

  1. 已添加android:supportsRtl="true"<application> list 文件中的元素
  2. 并在MainActivity.java类的onCreate方法中添加了以下函数。

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

但它仅将 MainActivity 的布局从 LTR 更改为 RTL。现在我想更改应用程序每个 Activity 的布局,我该怎么做。 如果任何人对整个应用程序中的 RTL 支持有任何了解,请帮助我。

最佳答案

您可以创建一个基本 Activity 并从中扩展您的所有 Activity :

BaseActivity.java

import android.annotation.TargetApi;
import android.os.Build;

public class BaseActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        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);
        }
    }

}

SampleActivity.java

public class SampleActivity extends BaseActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_sample);
    }

}

关于android - Android 所有 API 级别的 RTL 支持,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35546762/

相关文章:

android - WhereEqualTo 错误 Android

css - 下拉 css 菜单从 ltr 转换为 rtl

html - 解决 Chrome 中的 RTL children ordering

javascript - 如何在文本区域中从右到左书写英文

android - 无法使用Gradle构建Ionic/Cordova Android项目

java - Java 中是否有相当于 Actionscript 3.0 事件调度的方法?或者,如何在不相关的类实例之间有效地进行通信?

silverlight - IE9 Rendering Left-To-Right 标记

javascript - 使用 jquery 增加 CSS 值而不是减少

安卓.view.InflateException : Binary XML file line #17: Error inflating class fragment

java - 如何检查给定的字符串是否是一个单词