Xamarin Listview不遵循rtl方向

时间:2018-06-08 14:32:06

标签: android xamarin arabic right-to-left farsi

Helly伙计们。 我正在学习xamarin,并试图为Android制作一个基本的食物应用程序。这个应用程序是在RTL方向。现在我的主要内容中有一个Listview,其中包含自定义布局列表。这是一个自定义布局。我是Xamarin Designer窗口中的RTL。 enter image description here

这是布局axaml代码

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layoutDirection="rtl"
android:textDirection="rtl">
<LinearLayout
    android:orientation="vertical"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/linearLayout2">
    <ImageView
        android:src="@drawable/rating4"
        android:id="@+id/imgRating"
        android:layout_width="70dp"
        android:layout_height="20dp"
        android:layout_marginLeft="20dp"
        android:layout_marginRight="20dp"
        android:layout_marginTop="10dp" />
    <ImageView
        android:src="@drawable/defaultthumbnail"
        android:id="@+id/imgThumbnail"
        android:layout_width="match_parent"
        android:layout_height="70dp"
        android:layout_marginLeft="20dp"
        android:layout_marginRight="20dp" />
    <TextView
        android:text="10,000 تومان"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="20sp"
        android:textStyle="bold"
        android:id="@+id/foodPrice"
        android:layout_marginLeft="5dp"
        android:textDirection="rtl" />
</LinearLayout>
<LinearLayout
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginTop="10dp"
    android:layout_marginRight="20dp">
    <TextView
        android:text="نام غذا"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/txtFoodName"
        android:textSize="20sp"
        android:textStyle="bold" />
    <TextView
        android:text="توضیحات غذا"
        android:textAppearance="?android:attr/textAppearanceLarge"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:textSize="12sp"
        android:id="@+id/txtFoodDesc" />
    <TextView
        android:text="تاریخ"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/txtDate"
        android:textSize="8sp"
        android:textAllCaps="false" />
    <TextView
        android:text="آشپز"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/txtCook"
        android:textSize="8sp"
        android:textAllCaps="false" />
</LinearLayout>

这是我的主要布局,这个listview就在其中。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/mainContentLayout"
    app:layout_behavior="@string/appbar_scrolling_view_behavior"
    tools:showIn="@layout/app_bar_main"
    android:layoutDirection="rtl"
    android:textDirection="rtl">
    <ListView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/mainContentListView"
        android:layoutDirection="rtl"
        android:textDirection="rtl" />
</LinearLayout>

但是当我运行这个时,这就是我得到的

enter image description here

因为你可以在里面的那两个线性布局遵循RTL规则但是是倒置的。

2 个答案:

答案 0 :(得分:1)

我有同样的问题,我通过在应用程序的清单中添加以下内容来修复它:

<manifest>
    <application>
    android:supportsRtl="true"
    </application>
</manifest>
  • 默认模拟器和预览与“RTL”语言不兼容。尝试在真正的Android设备上测试或尝试xamarin live player。

  • 当android界面语言为英语时,也有一些android设备强制“ltr”,尝试将android语言改为“RTL”语言。

答案 1 :(得分:0)

关于repositories { google() jcenter() // Add your other repositories here } ,您可以参考this,它的默认值为false。

android:supportsRtl="true"开始,它在VS的设计中显示为:

enter image description here

但它在AS的设计中显示为:

enter image description here

与您运行的结果相同。

所以,VS的设计出了问题。

如果我没有误读你的问题,你想得到的是:

enter image description here

因此,您需要将layout axaml code更改为以下内容:

layout axaml code