Android 佈局之 RTL

Android 佈局之 RTL

中東國家地區須要適配 RTL的佈局,顧名思義支持從右至左佈局android

前提:在AndroidManifest.xml文件中 <application 設置屬性app

 android:supportsRtl=true ,表示應用支持RTL佈局此外TargetSdkVersion>=17,若不設置中東語言可開啓開發者選項中強制使用從右至左佈局佈局

支持RTL佈局時,佈局參數要儘可能避免使用left 或rightui

1.問題描述:

設置項,美顏圖標不支持RTL佈局,spa

  1. 查詢在AndroidManifest.xml 文件 android:supportsRtl= true
  2. 開發者選項開啓強制使用從左至右佈局,設置項,美顏圖標仍不支持RTL

 

2.緣由:

查詢對應組件的佈局參數.net

  1. 美顏圖標 佈局參數使用 「left」,「right」

android:layout_alignParentRight code

android:layout_marginRight     xml

 

(2)設置項子viewblog

自定義控件佈局onLayOut時判斷是不是RTL開發

部分layout並未使用start/end標記,而是使用的left/right標記;2.自定控件未作反向處理 將Layout中left/right的屬性換成start/end標記;

  1. 在自定義控件中檢查當前是不是RTL反向類型,若是是就反向遍歷添加子View

3.源碼解讀:

判斷當前的佈局方向

public static final int LAYOUT_DIRECTION_LTR = LayoutDirection.LTR;
public static final int LAYOUT_DIRECTION_RTL = LayoutDirection.RTL;

View.LAYOUT_DIRECTION_LTR

View.LAYOUT_DIRECTION_RTL

 

public int getLayoutDirection() {
    final int targetSdkVersion = getContext().getApplicationInfo().targetSdkVersion;
    if (targetSdkVersion < Build.VERSION_CODES.JELLY_BEAN_MR1) {
        mPrivateFlags2 |= PFLAG2_LAYOUT_DIRECTION_RESOLVED;
        return LAYOUT_DIRECTION_RESOLVED_DEFAULT;
    }
    return((mPrivateFlags2 & PFLAG2_LAYOUT_DIRECTION_RESOLVED_RTL) ==
            PFLAG2_LAYOUT_DIRECTION_RESOLVED_RTL) ? LAYOUT_DIRECTION_RTL : LAYOUT_DIRECTION_LTR;
}







注意:計算子View之間的間距,子View和父佈局之間的距離,根據是否支持RTL,從新計算起始子View的佈局參數

4.問題

設置系統語言或者直接打開開發者選項的強制RTL 影響佈局方向的機制??

科普參考:

(1)https://blog.csdn.net/lj19851227/article/details/12027321?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522160566488919724842901184%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=160566488919724842901184&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduend~default-2-12027321.pc_first_rank_v2_rank_v28&utm_term=Android+RTL&spm=1018.2118.3001.4449

(2)https://codegg.blog.csdn.net/article/details/46564025?utm_medium=distribute.pc_relevant.none-task-blog-OPENSEARCH-8.edu_weight&depth_1-utm_source=distribute.pc_relevant.none-task-blog-OPENSEARCH-8.edu_weight

相關文章
相關標籤/搜索