【问题标题】:Scrollview moves focused editText out of view when its numeric right aligned当其数字右对齐时,滚动视图将焦点编辑文本移出视图
【发布时间】:2016-09-22 16:30:32
【问题描述】:

我把五个editText放在一个linearLayout中的一个horizo​​ntalScrollview中。

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

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

  • 所有左对齐,所有 inputType 为数字:有效
  • 所有正确对齐,所有 inputType 作为默认值(文本):它工作
  • 所有右对齐,只有第一个作为数字:它滚动到最后
  • 所有右对齐,所有 inputType 为数字:滚动到末尾

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

编辑:问题发生在设备 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>

【问题讨论】:

    标签: android xamarin scrollview


    【解决方案1】:

    我一直在处理同样的问题。有趣的是,这个问题不会出现在 android 7 上。

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

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

    setInputType(InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_FLAG_SIGNED);
    

    有了这个

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

    在没有意外滚动的情况下完成我所追求的

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-11-13
      • 1970-01-01
      • 1970-01-01
      • 2017-02-06
      • 2014-04-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多