如何解决layout_constraintHorizontal_bias 在 RTL 方向上的片段更改后反转
我有一个包含两个片段的活动,这两个活动都显示一个包含 MaterialCardView 的回收视图。 在cardViews 中,我使用constraintLayout 作为根元素,并为某些视图使用layout_constraintHorizontal_bias。 [注意:应用程序是完整的RTL] fragment_test1.xml:
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".Test1Fragment">
<androidx.core.widget.nestedScrollView
android:id="@+id/scrollView_fVote"
android:layout_width="match_parent"
android:layout_height="match_parent">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv_test1"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
</androidx.core.widget.nestedScrollView>
test_card.xml:
<?xml version="1.0" encoding="utf-8"?>
<androidx.coordinatorlayout.widget.CoordinatorLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="120dp"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<com.google.android.material.card.MaterialCardView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginStart="8dp"
android:layout_marginEnd="8dp"
android:layout_marginTop="8dp"
app:cardBackgroundColor="@color/colorSecondary"
android:layoutDirection="rtl">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="120dp">
<TextView
android:id="@+id/tTest"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
android:text="test"
android:textColor="@color/colorAlert"
app:layout_constraintHorizontal_bias="0.10"/>
</androidx.constraintlayout.widget.ConstraintLayout>
</com.google.android.material.card.MaterialCardView>
</LinearLayout>
</androidx.coordinatorlayout.widget.CoordinatorLayout>
并使用此代码更改片段
BottomNavigationView bottomNavigationView = findViewById(R.id.bn_test);
bottomNavigationView.setonNavigationItemSelectedListener(new BottomNavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem menuItem) {
if(menuItem.getItemId() == R.id.testItem1){
getSupportFragmentManager().beginTransaction().replace(R.id.container_test,new Test1Fragment(EndGameActivity.this)).commit();
return true;
}else if (menuItem.getItemId() == R.id.testItem2){
getSupportFragmentManager().beginTransaction().replace(R.id.container_test,new Test2Fragment(EndGameActivity.this)).commit();
return true;
}
return false;
}
});
bottomNavigationView.setSelectedItemId(R.id.testItem2);
当活动打开并显示第一个片段时(Test1Fragment)一切正常,结果如下:this
但是当我将 framnet 更改为 Test2Fragment 时,偏差是相反的,结果是:this
当我切换回 Test1Fragment 时,偏差被逆转。它的意思是无论哪个片段首先显示,总是第一个片段正确显示。错误是当我从清单中删除 android:supportsRtl="true"
时,片段发生变化,卡片没有任何变化
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。