我有一个水平滚动视图,我可以在其中动态添加视图。在 LTR 语言上一切正常,我从左到右一个接一个地添加视图。在 RTL 上,问题是视图总是添加到滚动的左侧而不是像其他控制器一样添加到右侧,视图顺序正确添加的真正奇怪的工作人员,在第一个视图的左侧,所以他们从右到左排序,但在 -x 上的滚动视图之外。
这是我添加新视图时的代码:
Tag* tag = [self.storyboard instantiateViewControllerWithIdentifier:@"tag" ];
[_scroller addSubview:tag.view];
[tags addObject:tag];
Tag* prev = nil
for (Tag* tag in tags)
{
if (prev == nil)
{
[_scroller addConstraint:[NSLayoutConstraint constraintWithItem:tag.view
attribute:NSLayoutAttributeLeading
relatedBy:NSLayoutRelationEqual
toItem:_scroller
attribute:NSLayoutAttributeLeading
multiplier:1.0f
constant:0]];
}
else
{
[_scroller addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"[prev]-10-[tag]"
options:0
metrics:nil
views:@{@"tag" : tag.view, @"prev" : prev.view}]];
}
[_scroller addConstraint:[NSLayoutConstraint constraintWithItem:tag.view
attribute:NSLayoutAttributeCenterY
relatedBy:NSLayoutRelationEqual
toItem:_scroller
attribute:NSLayoutAttributeCenterY
multiplier:1.0f
constant:0]];
prev = tag;
}
Run Code Online (Sandbox Code Playgroud)
这是它如何在 LTR 和 RTL 上工作以及它如何实际工作的图像

uiscrollview right-to-left ios autolayout nslayoutconstraint
我正在处理一个复杂的控件,我们在移动 Safari 中发现了 RTL 模式(仅限)的错误。现在我已经将功能剥离到基本 div 容器(似乎 jsfiddle 不支持 RTL 模式)。
RTL(问题):http : //markuskonrad.de/concepts/overflow/overflowissue-rtl.html
LTR(常规 - 无问题):http : //markuskonrad.de/concepts/overflow/overflowissue-ltr.html
测试设备:
是否有可能存在 Safari Mobile 错误?我只在那里面临这个问题。
我知道 translate3d 是硬件加速的一种技巧,并且我们没有面临一些 scrollContent-Div 子元素的渲染问题。所以目前唯一的选择是等待对will-change属性的支持。还有其他想法吗?
HTML代码
<html dir="rtl" lang="en-US">
<head>
<link href="Styles/overflowissue.css" rel="stylesheet" />
</head>
<body>
<div id="scrollContainer" class="mySuiteUiScrollContainer">
<div id="scrollContent">
<p>
123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_
123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_
</p>
</div>
</div>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
CSS代码
.mySuiteUiScrollContainer {
clear: both;
display: block; …Run Code Online (Sandbox Code Playgroud) 我想对波斯语文本使用 textpath 功能,但是当我这样做时,波斯语文本会分成几个字母:

在不使用 textpath 功能的情况下更正波斯语文本:?? ??????????? ????? ?? ??????
当我使用 Canvas 在我的自定义视图中绘制时,是否有一种简单的方法可以在不手动反转坐标计算的情况下为 RTL 区域设置绘制?
作为一个非常人为的例子,这是一个自定义视图,在 onDraw() 中包含以下内容:
int w = getWidth();
int h = getHeight();
canvas.save();
mPaint.setColor(Color.RED);
canvas.drawRect(0, 0, w / 2, h, mPaint);
mPaint.setColor(Color.BLUE);
canvas.drawRect(w / 2, 0, w, h, mPaint);
int size = h / 4;
mPaint.setColor(Color.GREEN);
int paddingEnd = ViewCompat.getPaddingEnd(this);
canvas.translate(-paddingEnd, getPaddingTop());
canvas.drawRect(w - size, 0, w, size, mPaint);
canvas.restore();
Run Code Online (Sandbox Code Playgroud)
它在 LTR 和 RTL 布局中看起来完全相同:
我知道您可以使用矩阵或 canvas.scale(),但是对于更复杂的场景,例如在画布上绘制文本或其他可绘制对象,这不是一个可行的选择。
在 Canvas 上完成 RTL 绘图的最佳方法是什么?我真的必须计算 X 轴坐标的倒置值吗?
我最近完成了一个项目的构建,我的下一个目标是专门为 RTL 创建一个构建风格,一个重要的注意事项是我需要强制 RTL 布局,独立于设备语言。
所以我设法使用视图方法setLayoutDirection在大多数应用程序上强制 RTL并旋转所有不合作的视图,但由于某种原因,我无法镜像应用程序中的对话框,这些对话框仅在设备语言更改。我试图翻转 onCreateDialog 中的对话框,访问返回 null 的 getView,但我不确定我还能做什么......
有人可以帮我将 DialogFragment 翻转到 RTL 吗?
谢谢。
我只是想知道,Android 如何在 RTL 模式下使用自定义视图画布。与此示例一样,问题链接。
它适用于英语语言环境,但当语言环境更改为阿拉伯语时,其文本(+)消失。
所以我不想要答案,我基本上想知道 RTL 画布是如何工作的。
首先,我在 android 上工作并且 RTL 运行良好,我添加了以下代码:
I18nUtil sharedI18nUtilInstance = I18nUtil.getInstance();
sharedI18nUtilInstance.setAllowRTL(context, true);
Run Code Online (Sandbox Code Playgroud)
到 MainActivity.java 和
android:supportsRtl="true"
Run Code Online (Sandbox Code Playgroud)
到 AndroidManifest.xml
并在js代码中:
I18nManager.forceRTL(true);
Run Code Online (Sandbox Code Playgroud)
现在是问题:我尝试在 ios 上设置 rtl 但它不起作用我添加了
// in AppDelegate.m
[[RCTI18nUtil sharedInstance] allowRTL:YES];
Run Code Online (Sandbox Code Playgroud)
和
I18nManager.forceRTL(true);
Run Code Online (Sandbox Code Playgroud)
在 js 代码中,但所有文本和 flex 仍然是 ltr...我能做什么?
我想用阿拉伯语显示25%*,它应该是这样的:*%25
我尝试使用direction:rtf来显示它,但是,当您向其附加一些阿拉伯文本时,它似乎只能正确显示。运行下面的代码片段来看看我的意思:
var arabicword = "???";
var percent = "25%*";
document.getElementById('text2').innerHTML = arabicword+" "+percent;
document.getElementById('text1').innerHTML = percent;Run Code Online (Sandbox Code Playgroud)
.text {
font-size:3em;
width:300px;
color:white;
background: grey;
}
.arabic{
background:green;
direction:rtl;
}Run Code Online (Sandbox Code Playgroud)
<div id="text1" class="text arabic">0</div>
<br>
<div id="text2" class="text arabic">0</div>Run Code Online (Sandbox Code Playgroud)
提前致谢
我正在尝试建立一个可用于多种文化、具有不同阅读方向的网站。
为此,我只需dir="rtl"在我的根 HTML 元素上添加该属性。
我的问题是我有一些特定于一个方向或另一个方向的 CSS 规则(大多数情况下是边距或填充)。
我认为我可以简单地使用属性选择器,但该dir属性仅设置在根元素上,所以这不起作用:
selector {
&[dir="ltr"] {
// LTR specific
}
&[dir="rtl"] {
// RTL specific
}
}
Run Code Online (Sandbox Code Playgroud)
例如,在这个演示中,如果应用程序rtl在标准 中,则标题在右侧应该有 5px 的边距,如果在标准 中,则在左侧ltr。
我注意到direction正确设置为rtl,有没有办法在 aCSS或Sass选择器中使用该规则?
好像忘记了很重要的一点。我正在使用 Vue.js 构建网站,该dir属性在主组件 ( App) 中是 bind并且 RTL/LTR 特定的 CSS 规则可以在同一组件或其他自包含组件中。
我使用material-ui,并next和jss-rtl我的react项目,但有一个问题的页面仍ltr使用后<JssProvider ...>
-rtl组件代码:
import React from "react";
import { create } from 'jss';
import rtl from 'jss-rtl';
import JssProvider from 'react-jss/lib/JssProvider';
import { createGenerateClassName, jssPreset } from 'material-ui/styles';
// Configure JSS
const jss = create({ plugins: [...jssPreset().plugins, rtl()] });
// Custom Material-UI class name generator.
const generateClassName = createGenerateClassName();
function RTL(props) {
return (
<JssProvider jss={jss} generateClassName={generateClassName}>
{props.children}
</JssProvider>
);
}
export default RTL;
Run Code Online (Sandbox Code Playgroud)
-index.js代码:
import React from 'react'; …Run Code Online (Sandbox Code Playgroud) right-to-left ×10
android ×3
css ×3
ios ×3
html ×2
arabic ×1
autolayout ×1
canvas ×1
dialog ×1
java ×1
javascript ×1
jss ×1
material-ui ×1
persian ×1
react-native ×1
reactjs ×1
sass ×1
svg ×1
uiscrollview ×1
webkit ×1