- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的 Activity
中有两个 EditText
,每个都在 TextInputLayout
中:
<android.support.design.widget.TextInputLayout
android:id="@+id/tilm"
android:layout_width="250dp"
android:layout_height="50dp"
android:layout_below="@+id/logo"
android:layout_marginTop="10dp"
android:layout_centerHorizontal="true"
android:textColorHint="#FFFFFF"
app:hintEnabled="false">
<android.support.design.widget.TextInputEditText
android:id="@+id/etlogin"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/round_edittext"
android:hint="@string/email"
android:textColorHint="#FFFFFF"
android:gravity="center"
android:padding="5dp"
android:textColor="#FFFFFF"
android:inputType="textEmailAddress" />
</android.support.design.widget.TextInputLayout>
<android.support.design.widget.TextInputLayout
android:id="@+id/til"
android:layout_width="250dp"
android:layout_height="50dp"
android:layout_below="@+id/tilm"
android:layout_marginTop="10dp"
android:layout_centerHorizontal="true"
app:passwordToggleEnabled="true"
android:textColorHint="#FFFFFF"
app:hintEnabled="false">
<android.support.design.widget.TextInputEditText
android:id="@+id/etpass"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/round_edittext"
android:hint="@string/pass"
android:textColorHint="#FFFFFF"
android:gravity="center"
android:padding="5dp"
android:textColor="#FFFFFF"
android:inputType="textPassword" />
</android.support.design.widget.TextInputLayout>
此外,在代码中,我有相同的 onFocusChangeListener
Hook :
focusChangeListener=new View.OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
if(hasFocus){
scrollView.postDelayed(new Runnable() {
@Override
public void run() {
scrollView.fullScroll(ScrollView.FOCUS_DOWN);
}
}, 200);
}
}
};
(这是为了当键盘出现时,我布局中的 ScrollView
会下降,这样用户就可以看到下方 UI 的其他元素,特别是按钮)。
此外,TextInputEditText
都有一个 TextWatcher
:
textWatcher=new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
@Override
public void afterTextChanged(Editable s) {
if(ValidateLogin(login.getText().toString()) && pass.getText().length()>0){
entrar.setEnabled(true);//This is a button
}else{
if(entrar.isEnabled()){
entrar.setEnabled(false);
}
}
}
};
login.addTextChangedListener(textWatcher);
pass.addTextChangedListener(textWatcher);
login.setOnFocusChangeListener(focusChangeListener);
pass.setOnFocusChangeListener(focusChangeListener);
问题是,当第二个 TextInputEditText
获得焦点时,光标会自动转到第一个,而我无法在第二个中键入任何内容,因为焦点会立即转到第一个一。我不希望这种情况发生,在两个 TextInputEditText
中都保留我的 onFocusChangeListener
,并且不要自动更改焦点。
我试图为第二个 TextInputEditText
创建另一个 OnFocusChangeListener
,但没有成功。如果我删除 onFocusChangeListener
,焦点将保留在 TextInputEditText
中,但显然 ScrollView
不会移动。
有什么帮助吗?
谢谢。
最佳答案
documentation of ScrollView.fullScroll()说:
This method will scroll the view to the top or bottom and give the focus to the topmost/bottommost component in the new visible area.
问题可能是第一个 TextInputEditText
是 ScrollView
的“新可见区域中的最顶层组件”,因此它会自动获得焦点。
可能的解决方案可能是:
使用
代替fullScroll
int scrollY = Math.max(0, content.getHeight() - scrollView.getHeight()); // where content is the content view of the scroll view
scrollView.smoothScrollTo(0, scrollY); // or scrollTo if you don't want animation
关于android - 如果 Hook onFocusChangeListener,TextInputEditText 的奇怪行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54124789/
我只从事 Android 应用程序开发工作几天,所以请原谅我的无知。我正在尝试为 EditText 设置一个监听器,该监听器将在该字段失去焦点后触发。我在 java 中找到了一些示例,但找不到用于 m
我的 Activity 中有一个 EditText。 OnFocusChangeListener 仅在选择另一个 EditText(或输入)时调用。 我如何确定我的 EditText 之外的点击(就像
我正在开发示例应用程序来测试 OnFocusChangeListener,我将调试点放在它的方法上 public void onFocusChange(View v, boolean hasFocus
我在 ListFragment 中有一个 ListView,我想在用户更改列表中的焦点项时更改 fragment 的背景。我特意在这里说焦点,因为这是一个 Google TV 应用程序,所以我针对方向
我为 Android 计算器应用程序编写了一些代码。我想要的是:- 如果 EditText 字段失去焦点,所有输出字段都应该得到更新,就像在 Excel 工作表中发生的那样,如果我们更新单元格中的任何
我有一个标准的文本字段,我想知道用户何时在其中设置焦点。有没有办法做到这一点? 我尝试设置可点击修饰符以在有人单击它时触发事件,但看起来它不适用于 TextField: modifier = Modi
我目前正在尝试为我的应用程序提供一个直观的界面。 我有一个 oncreate 函数可以在加载时激活键盘,效果很好。 public void onCreate(Bundle savedInstanceS
myEdit1.setOnKeyListener(new OnKeyListener() { public boolean onKey(View v, int keyCode,
我正尝试按如下方式自定义 View.onFocusChangeListener 类: private class myCostBoxFocusListener implements View.onFo
我做了一个 EditText OnFocusChangeListener据推测,当它不在焦点上时,它会隐藏光标和另一个 View (即单击屏幕上除 EditText 之外的任何位置将隐藏这些项目)。点
我在用户输入表单上有一个 EditText 行。单击 EditText 以启动 DatePickerDialog 使用 setOnTouchListener 效果很好。我设置的用于处理 EditTex
我在 Activity 中有一个 SearchView;当用户执行搜索时,一个包含搜索结果的 Fragment 被添加到同一个 Activity 中。 现在我想要的是当 SearchView 被点击时
我有这段代码,其中每次前一个 lineaLayout 的编辑文本失去焦点时,我都会膨胀一个包含 3 个 editText 的 linearLayout。我只想在最近创建的 editTexts 上使用
我需要为我的 EditText 实现一次性 OnFocusChangeListener。即,一旦 EditText 获得焦点,它就会执行某些操作并停止监听焦点更改事件。 我将一个任意的 OnFocus
我的 Activity 中有两个 EditText,每个都在 TextInputLayout 中: 此外,在
我正在使用一个包含 EditText 的库,我需要检测此 EditText 何时失去焦点。该库已在此 EditText 上添加了一个 OnFocusChangeListener,因此我无法覆盖此监听器
我想为我拥有的每个 EditText(在我的例子中是 VerifiedEditText)设置自动滚动。我是这样做的,但我认为这不是应该的方式(看起来太复杂、太乱、太长),你能推荐我让它更简单吗?我仍在
我有一个微调器,可以与标准 OnItemSelectedListener 一起正常工作以呈现一组选项: s.setAdapter(adapter); s.setOnItemSelectedListen
没有比标题更清楚的了。我有一个由文本输入布局包裹的 EditText。我试图在 EditText 失去焦点时触发一个事件。但是,一旦应用了事件监听器,TextInputLayout 就不再为文本设置动
我正在尝试在 EditText 上实现 OnFocusChangeListener。问题是我收到此错误 Class 'FacilityScreen' must either be declared a
我是一名优秀的程序员,十分优秀!