当数字右对齐

时间:2016-09-22 16:30:32

标签: android xamarin scrollview

我在horizo​​ntalScrollview中将5个editText放在linearLayout中。

当editText右对齐并且数字为inputtype时,当editText获得焦点时,scrollview会完全向右滚动,即使这意味着edittext要离开视图

我做了不同的测试,似乎只有在编辑文本右对齐且输入类型为数字时才会发生。

  • 所有左对齐,所有inputType都为数字:它可以正常工作
  • 全部对齐,所有inputType默认为(文本):它可以正常工作
  • 全部对齐,只有第一个作为数字:它滚动到最后
  • 全部对齐,所有inputType都为数字:它滚动到最后

滚动视图向左滚动,键盘被隐藏,当我点击第一个editText时,滚动视图向右滚动,隐藏当前聚焦的编辑文本

Behavior

编辑:问题发生在设备Nexus 7(2012)6.0.1和仿真器Nexus 7 5.1和4.4.2上。它在设备Galaxy Tab3 4.4.2

上工作正常

如果你想尝试,这就是布局

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:minWidth="25px"
    android:minHeight="25px">
    <HorizontalScrollView
        android:minWidth="25px"
        android:minHeight="25px"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/contentContainer"
        android:fillViewport="true">
        <LinearLayout
            android:orientation="horizontal"
            android:id="@+id/mainContentContainer"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:focusableInTouchMode="false"
            android:focusable="false">
            <TextView
                android:text="Test"
                android:layout_width="wrap_content"
                android:layout_height="match_parent"
                android:id="@+id/textView1"
                android:lines="1" />
            <EditText
                android:layout_width="250dp"
                android:layout_height="wrap_content"
                android:id="@+id/editText1"
                android:hint="1"
                android:inputType="number"
                android:gravity="right" />
            <EditText
                android:layout_width="250dp"
                android:layout_height="wrap_content"
                android:id="@+id/editText2"
                android:hint="2"
                android:inputType="number"
                android:gravity="right" />
            <EditText
                android:layout_width="250dp"
                android:layout_height="wrap_content"
                android:id="@+id/editText3"
                android:hint="3"
                android:inputType="number"
                android:gravity="right" />
            <EditText
                android:layout_width="250dp"
                android:layout_height="wrap_content"
                android:id="@+id/editText4"
                android:hint="4"
                android:inputType="number"
                android:gravity="right" />
            <EditText
                android:layout_width="250dp"
                android:layout_height="wrap_content"
                android:id="@+id/editText5"
                android:hint="5"
                android:inputType="number"
                android:gravity="right" />
        </LinearLayout>
    </HorizontalScrollView>
</LinearLayout>

1 个答案:

答案 0 :(得分:0)

我一直在处理同样的问题。有趣的是,这个问题并没有发生在Android 7上。

我的解决方案/解决方法(远非完美)是抛弃inputType而是使用仅限于数字的keylistener。

在我的情况下,我在java中这样做并替换了这一行

setInputType(InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_FLAG_SIGNED);

有了这个

setKeyListener(DigitsKeyListener.getInstance("0123456789./-‌​"));

在没有意外滚动

的情况下我做了什么