如何使用layoutDirection在Android中动态镜像整个布局?

时间:2019-10-04 20:45:54

标签: java android xml android-layout

我正在尝试构建android应用程序的前端视图。我必须将整个显示动态地推到屏幕的右侧。

我想将整个相对布局推到屏幕右侧。

以下是我的XML代码:

startdate = str(startdate)[0:10] #This truncates the string to the first 10 digits
enddate = str(enddate)[0:10] 

我想动态地做。 我尝试将 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/message_single_layout" android:padding="10dp" android:layout_gravity="" android:weightSum="10"> <de.hdodenhof.circleimageview.CircleImageView android:id="@+id/message_profile_layout" android:layout_width="36dp" android:layout_height="36dp" android:layout_weight="0" android:src="@drawable/default_avatar" /> <TextView android:layout_alignParentRight="true" android:id="@+id/message_text_layout" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/name_text_layout" android:layout_marginLeft="10dp" android:layout_toEndOf="@+id/message_profile_layout" android:padding="10dp" android:background="@drawable/their_message" android:text="Message Text" android:textColor="@color/colorPrimary" android:textSize="14sp" /> <TextView android:id="@+id/name_text_layout" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentTop="true" android:layout_marginLeft="10dp" android:layout_toEndOf="@+id/message_profile_layout" android:text="Display Name" android:textColor="@android:color/black" android:textSize="15sp" android:textStyle="bold" /> <TextView android:id="@+id/time_text_layout" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/message_text_layout" android:layout_marginStart="-15dp" android:layout_marginLeft="10dp" android:layout_marginTop="4dp" android:layout_toEndOf="@+id/name_text_layout" android:text="00:00" android:textSize="12sp" /> <ImageView android:id="@+id/message_image_layout" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/message_text_layout" android:layout_alignStart="@+id/message_text_layout" android:layout_alignParentEnd="true" android:layout_marginStart="0dp" android:layout_marginLeft="0dp" android:layout_marginTop="-6dp" android:layout_marginEnd="9dp" android:layout_toEndOf="@+id/message_profile_layout" android:padding="0dp" android:scaleType="centerCrop" /> </RelativeLayout> 更改为gravity,将right更改为layout_gravityright功能。没有什么能解决我的问题。 请帮我。  谢谢。

1 个答案:

答案 0 :(得分:5)

在“活动”或片段中将 RelativeLayout 对象声明为字段

private RelativeLayout mRoot;

按如下所示初始化您的根布局对象变量:

活动中:

@Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.yourLayout);

         mRoot= findViewById(R.id.message_single_layout);
    }

在片段中:

@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
    super.onViewCreated(view, savedInstanceState);
    mRoot= (RelativeLayout) view;
}

以及您想在哪里将根布局方向设置为rtl(如果您的最低SKD至少为17)。 rtl表示从右到左

    mRoot.setLayoutDirection(View.LAYOUT_DIRECTION_RTL);

希望这对您有帮助!