验证EditText在屏幕中是否不可见

时间:2013-05-03 19:47:03

标签: android android-edittext scrollview

我要介绍的这个问题,只发生在Android 4.0 +
我有一个带有4个TableLayout的LinearLayout,它的父级是ScrollView。 我将TableRows动态添加到每个TableLayout中。

我的TableRows是这样的。

<TableRow xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/tableRow1"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:background="@drawable/borda"
    android:layout_margin="10dip"
    android:paddingLeft="10dip"
    >
  <LinearLayout
    android:id="@+id/l1"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    android:layout_marginTop="15dip"
    android:layout_marginBottom="15dip"
    >

    <TextView
        android:id="@+id/label"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/nome"
        android:textStyle="bold"
        android:textColor="#526691"
        android:textSize="15sp"
        android:paddingLeft="10dip"
        android:paddingRight="5dip"
         />


       <EditText
        android:id="@+id/valorLabel"
        android:layout_width="140dip"
        android:layout_height="wrap_content"
        android:textSize="15sp" 
        android:background="#ffffffff"   
        android:singleLine="true"   
        android:inputType="textCapSentences" 
         android:textColor="#777777" />          


 </LinearLayout>

</TableRow>

当聚焦的EditText滚动到屏幕外时似乎有问题。

问题 我怎么知道EditText在屏幕上是否可见?是否有一种方法可以在EditText中删除焦点,如果它的父节点已滚动?

第二个问题 为什么在EditText聚焦时我的TableRow背景会变白?

1 个答案:

答案 0 :(得分:1)

这是第一个问题的答案: Android: how to check if a View inside of ScrollView is visible?

第二个,您可以在父视图上设置OnTouchListener。滚动时,其x或y值会更改,然后在EditText上执行clearFocus()。这是一个很好的参考,请检查触摸事件监听器部分: http://www.techotopia.com/index.php/Android_Touch_and_Multi-touch_Event_Handling

如果您输入源代码和错误日志,您将获得更好的具体答案。