按下按钮"加"如何在底部添加编辑文本时添加布局如果编辑文本未聚焦,则隐藏布局 请看这张图片 example
答案 0 :(得分:0)
您的布局必须包含ListView
,EditText
和FloatingActionButton
。将所有这些放在RelativeLayout
内。这方面的一个例子是
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="abcd.MainActivity">
<android.support.design.widget.FloatingActionButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:clickable="true"
android:id="@+id/fab"
android:layout_alignParentBottom="true"
android:layout_alignParentEnd="true"/>
<android.support.design.widget.TextInputLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_toLeftOf="@id/fab"
android:layout_alignParentBottom="true"
android:layout_alignParentStart="true">
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Input"
android:id="@+id/input"
/>
</android.support.design.widget.TextInputLayout>
<ListView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_alignParentTop="true"
android:layout_alignParentStart="true"
android:layout_above="@id/fab"
android:divider="@android:color/transparent"
android:id="@+id/list"/>
</RelativeLayout>
默认情况下,后退按钮执行关闭TextInputLayout的功能。要在外面触摸它时将其关闭,您可以将以下内容添加到您的活动中。
@Override
public boolean dispatchTouchEvent(MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_DOWN) {
View v = getCurrentFocus();
if ( v instanceof EditText) {
Rect outRect = new Rect();
v.getGlobalVisibleRect(outRect);
if (!outRect.contains((int)event.getRawX(), (int)event.getRawY())) {
v.clearFocus();
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(v.getWindowToken(), 0);
}
}
}
return super.dispatchTouchEvent( event );
}
答案 1 :(得分:0)
将OnFocusChangeListener
添加到EditText
并在覆盖的onFocusChange(View v, boolean hasFocus)
方法内添加或删除基于hasFocus
值的布局(如果它具有焦点,则为true)。
有关OnFocusChangeListener