小编Bre*_*ell的帖子

ViewCompat.getLayoutDirection 直到 onResume() 之后才返回正确的布局

我正在尝试在包含两个 TextView 和一个 ImageButton 的复杂布局中处理 RTL(从右到左)布局。

然而,布局方向永远不会返回 RTL 作为布局方向,直到 onResume() 方法被调用一段时间后。调用ViewCompat.getLayoutDirection(getView())总是在我检查过的生命周期中的每个点返回 LTR,除了 inonStop()

我们一直使用这个方法来处理 RecyclerView 中的绑定视图,但这是我们第一次尝试在 RecyclerView 之外的复杂布局上使用它。

有没有其他人看到这种行为或知道如何(或何时)获得正确的布局方向?

这是我为处理 RTL 所做的工作:

我的片段.java:

private TextView title;
private TextView subtitle;

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.fragment_preview_audio, container, false);
    loadAsset();
    validateAsset();

    int layoutDirection = ViewCompat.getLayoutDirection(container);
    setupUi(layoutDirection);

    populateData();

    return view;
}

private void setupUi(int layoutDirection) {
    int gravity = GravityCompat.getAbsoluteGravity(GravityCompat.START, layoutDirection);
    title.setGravity(gravity);
    subtitle.setGravity(gravity);
}
Run Code Online (Sandbox Code Playgroud)

details.xml(包含在 fragment_preview_audio 中)

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android" …
Run Code Online (Sandbox Code Playgroud)

android android-layout

5
推荐指数
1
解决办法
931
查看次数

标签 统计

android ×1

android-layout ×1