У меня есть пользовательский вид внизу, содержащий значки в портретном режиме.Я хочу этот вид на правой стороне экрана в ландшафтном режиме.Я пытался установить свойства во время выполнения, но это не работает.Я уверен, что либо я что-то упускаю, либо делаю что-то не так.
Ниже приведен мой XML:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/container"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".ui.HomeActivity">
<FrameLayout
android:id="@+id/fragment_container"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="@string/title_mirror"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintTop_toTopOf="parent">
</FrameLayout>
<LinearLayout
android:id="@+id/navigation_view"
android:layout_width="match_parent"
android:layout_height="56dp"
android:layout_alignParentBottom="true"
android:background="?android:attr/windowBackground"
android:orientation="horizontal"
android:weightSum="1">
<ImageView
android:id="@+id/image_mirror"
android:layout_width="@dimen/_20sdp"
android:layout_height="@dimen/_20sdp"
android:layout_gravity="center"
android:layout_marginTop="8dp"
android:layout_marginBottom="8dp"
android:layout_weight="0.33"
app:srcCompat="@drawable/ic_mirror_not_selected" />
<ImageView
android:id="@+id/image_review"
android:layout_width="@dimen/_20sdp"
android:layout_height="@dimen/_20sdp"
android:layout_gravity="center"
android:layout_marginTop="8dp"
android:layout_marginBottom="8dp"
android:layout_weight="0.33"
app:srcCompat="@drawable/ic_review_not_selected" />
<ImageView
android:id="@+id/img_profile"
android:layout_width="@dimen/_20sdp"
android:layout_height="@dimen/_20sdp"
android:layout_gravity="center"
android:layout_marginTop="8dp"
android:layout_marginBottom="8dp"
android:layout_weight="0.33"
app:srcCompat="@drawable/ic_profile_not_selected" />
</LinearLayout>
</RelativeLayout>
В приведенном выше XML LinearLayout с идентификатором navigation_view - это мое пользовательское представление.Я хочу, чтобы этот вид находился с правой стороны экрана в ландшафтном режиме.Я попытался установить следующие свойства во время выполнения, но это удерживает мой взгляд сверху вместо правильного.
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(MATCH_PARENT, RelativeLayout.LayoutParams.MATCH_PARENT);
if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
ViewGroup.LayoutParams params1 = view_nav.getLayoutParams();
params1.height = ViewGroup.LayoutParams.MATCH_PARENT;
params1.width = 100;
params.addRule(RelativeLayout.ALIGN_PARENT_END);
LinearLayout layout = new LinearLayout(this);
layout.setOrientation(LinearLayout.VERTICAL);
view_nav.setLayoutParams(params);
img_mirror.startAnimation(toLandAnim);
img_review.startAnimation(toLandAnim);
img_profile.startAnimation(toLandAnim);
// constraintSet.connect(view_nav.getId(), ConstraintSet.LEFT, R.id.fragment_container, ConstraintSet.LEFT, 0);
// constraintSet.applyTo(constraintLayout);
} else {
// In portrait
img_mirror.startAnimation(toPortAnim);
img_review.startAnimation(toPortAnim);
img_profile.startAnimation(toPortAnim);
}
}
Я не уверен, как мне установить свойство LinearLayout во время выполнения, чьим родителем является RelativeLayout.