首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AppCompat对RTL的支持

AppCompat对RTL的支持
EN

Stack Overflow用户
提问于 2015-06-18 08:45:05
回答 1查看 500关注 0票数 1

我最近一直在研究支持RTL文本和布局。根据这个职位的说法,安卓将为API-17自动支持和切换layoutDirection,这就是为什么增加StartEnd重力的原因。现在的问题是如何以类似的方式支持pre API-17。

这个问题以前已经问过很多次了,一般的解决办法是检查区域或文本,然后根据需要设置重力。至少,与这样的解决方案相比,这需要更少的精力。

我现在重新讨论这个问题的原因是我注意到了对support-v7-appcompat的更新,它现在包含AppCompatTextViewLinearLayoutCompat等类。据我所知,这些支持库的目的是模仿以后Android版本的默认行为。我创建了一个布局来测试这个。

layout.xml

代码语言:javascript
复制
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="match_parent"
      android:layout_height="match_parent"
      android:background="#80ccffee">
<android.support.v7.widget.AppCompatTextView
      android:id="@+id/textview"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_alignParentTop="true"
      android:layout_alignParentBottom="true"
      android:layout_alignParentLeft="true"
      android:layout_alignParentRight="true"
      android:layout_alignParentStart="true"
      android:layout_alignParentEnd="true" />
</RelativeLayout>

当我给textview一个阿拉伯字符串时,它将被正确地检测为RTL文本,并在API-17设备上自动对齐,在API-10设备上不会出现相同的情况。我可能误解了AppCompatTextView的目的,但GravityCompat.START的存在告诉我,它的目的是作为一种解决办法。

然后,我将textview封装在一个LinearLayoutCompat中,希望布局的方向会影响它,但没有运气。

因此,我的问题是:在新的AppCompat更新中是否有一种机制可以用于支持RTL,而不必在代码中设置每个TextView的重力?

EN

回答 1

Stack Overflow用户

发布于 2020-04-29 13:31:52

是的,有!

您可以通过覆盖主题的默认属性来实现您想要的结果,如下所述:

转到res -> value -> styles.xml

覆盖以下属性:

代码语言:javascript
复制
<style name="AppTheme" parent="Theme.MaterialComponents.Light.DarkActionBar">
    <item name="android:textDirection">rtl</item>
    <item name="android:gravity">start</item>
</style>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30910528

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档