Android edittext rtl指针问题

时间:2018-01-09 11:09:09

标签: android android-edittext android-inputtype

在rtl布局中,edittext 指针在Android设备中被破坏。

我有一个支持英语和阿拉伯语的应用程序。因为输入类型编号的编辑文本字段主要是这个问题。在编辑文本字段中输入数字时,指针将分成两半,如图所示。

这是edittext的xml代码。

    <EditText
            android:id="@+id/et_budget"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_margin="15dp"
            android:background="@drawable/white_background_theme_border"
            android:ems="10"
            android:gravity="center"
            android:hint="@string/choose_budget"
            android:inputType="number"
            android:padding="15dp"
            android:textAppearance="?android:attr/textAppearanceLarge"
            android:textColorHint="@android:color/black" />

pointer break

有人遇到过此问题。是否有相同的修复方法。 提前谢谢。

4 个答案:

答案 0 :(得分:2)

你试过这个吗?

<强>布局

<EditText>
    ... 
    android:gravity="right"
    android:textDirection="rtl"
</EdiText>

<强>的AndroidManifest.xml

<application
    ...
    android:supportsRtl="true">
    ...
</application>

答案 1 :(得分:0)

只需添加此行

即可
 android:layoutDirection="ltr"

答案 2 :(得分:0)

不是使用android:inputType="number",而是在我的情况下设置android:inputType="phone"。因为我只想在编辑文本中键入数字。

以下是我的来自xml的EditText:

<EditText
        android:layout_gravity="start"
        android:textAlignment="viewStart"
        android:textDirection="rtl"
        android:gravity="center_vertical"
        android:layout_width="match_parent"
        android:hint="abc"
        android:inputType="phone"
        android:id="@+id/myNumber"
        android:paddingStart="8dp"
        android:paddingLeft="8dp"
        android:background="@android:color/transparent"
        android:textColorHint="#767676"
        android:backgroundTint="@android:color/transparent"
        android:layout_height="fill_parent"
        tools:ignore="RtlCompat" />

答案 3 :(得分:0)

import React from "react";
import ReactDOM from "react-dom";

import "./styles.css";

class Counter extends React.Component {
  render() {

    return (
      <div>
        <div>{this.props.display}</div>
        <button onClick={this.props.fun}>+</button> //onclick not works!!
      </div>
    );
  }
}

class CounterParent extends React.Component {
  constructor(props) {
    super(props);
    this.state = {
      count: 0 //added
    };
  }

  increase = () => { //not called
    this.setState({
      count: this.state.count + 1
    });
  };

  render() {

    let object = {
      display: this.state.count,
      func: this.increase
    };

    return (
      <div >
        <Counter {...object} />
      </div>
    );
  }
}

const rootElement = document.getElementById("root");
ReactDOM.render(<CounterParent />, rootElement);

使文本方向指向所选的一面。如果您输入的是拉丁字符ı强烈建议您使用ltr(阿拉伯语)。但标签是按其性质定位的(例如,阿拉伯语右侧,英语左侧)