如果状态栏是半透明的,则键盘隐藏 EditText
Posted
技术标签:
【中文标题】如果状态栏是半透明的,则键盘隐藏 EditText【英文标题】:Keyboard hiding EditText if Status bar is Translucent 【发布时间】:2018-05-31 15:58:28 【问题描述】:我有一个布局:
这是它的 XML
<ScrollView
android:id="@+id/mScroller"
android:layout_
android:layout_
android:clipToPadding="false"
android:fillViewport="true"
android:fitsSystemWindows="false"
android:nestedScrollingEnabled="false"
>
<RelativeLayout
android:id="@+id/toolbar"
android:layout_
android:layout_
android:layout_alignParentStart="true"
android:layout_alignParentTop="true"
android:background="@color/black"
android:paddingTop="20dp">
<LinearLayout
android:layout_
android:layout_
android:weightSum="11"
>
<ImageView
android:id="@+id/back_img"
android:layout_
android:layout_
android:padding="@dimen/med_below_padding"
android:src="@drawable/back_arrow"
/>
<TextView
android:id="@+id/from_txt"
android:layout_
android:layout_
android:layout_weight="2"
android:gravity="center_vertical"
android:paddingBottom="@dimen/min_padding"
android:paddingTop="@dimen/min_padding"
android:singleLine="true"
android:text="@string/id_my_business_card"
android:textColor="@color/white"
android:textSize="@dimen/normal_text"
/>
<TextView
android:id="@+id/textView8"
android:layout_
android:layout_
android:layout_weight="7"
android:gravity="center"
android:text="@string/id_add_new_business_card"
android:textColor="@color/white"
android:textSize="@dimen/top_heading"/>
<TextView
android:id="@+id/textView_add"
android:layout_
android:layout_
android:layout_margin="13dp"
android:layout_weight="2"
android:background="@drawable/white_border"
android:gravity="center"
android:src="@drawable/camerasection_flipcamera"
android:text="@string/add"
android:textColor="@color/white"
android:textSize="@dimen/normal_text"
/>
</LinearLayout>
</RelativeLayout>
</ScrollView>
<RelativeLayout
android:id="@+id/edit_message_layout"
android:layout_
android:layout_
android:layout_alignParentBottom="true">
<LinearLayout
android:layout_
android:layout_
android:layout_marginTop="70dp"
android:background="@drawable/border_top_rounded"
android:gravity="right"
android:orientation="vertical"
android:paddingLeft="10dp"
android:paddingRight="10dp"
android:paddingTop="@dimen/med_below_padding">
<!--<ScrollView-->
<!--android:layout_-->
<!--android:layout_>-->
<!--<LinearLayout-->
<!--android:layout_-->
<!--android:layout_-->
<!--android:orientation="vertical">-->
<LinearLayout
android:layout_
android:layout_
android:gravity="top|center_vertical"
android:orientation="horizontal">
<ImageView
android:id="@+id/imageView_profile"
android:layout_
android:layout_
android:layout_margin="@dimen/general_margin"
android:clickable="true"
android:visibility="gone"
app:srcCompat="@drawable/chatcontacticon"/>
<LinearLayout
android:layout_
android:layout_
android:orientation="vertical">
<EditText
android:id="@+id/editText_firstname"
android:layout_
android:layout_
android:layout_marginBottom="@dimen/med_padding"
android:layout_marginLeft="@dimen/med_padding"
android:layout_marginRight="@dimen/med_padding"
android:layout_marginTop="@dimen/med_below_padding"
android:layout_weight="1"
android:background="@null"
android:ems="10"
android:gravity="left|center_vertical"
android:hint="@string/first_name"
android:inputType="textPersonName"
android:textColor="@color/black"
android:textColorHint="@color/grey_line"
android:textColorLink="@color/transparent"
android:textSize="@dimen/normal_text"/>
<View
android:layout_
android:layout_
android:layout_marginLeft="@dimen/med_padding"
android:layout_marginRight="@dimen/med_padding"
android:background="@color/new_chat_header"
/>
<EditText
android:id="@+id/editText_lastname"
android:layout_
android:layout_
android:layout_marginBottom="@dimen/med_padding"
android:layout_marginLeft="@dimen/med_padding"
android:layout_marginRight="@dimen/med_padding"
android:layout_marginTop="@dimen/med_padding"
android:layout_weight="1"
android:background="@null"
android:ems="10"
android:gravity="left|center_vertical"
android:hint="@string/last_name"
android:inputType="textPersonName"
android:textColor="@color/black"
android:textColorHint="@color/grey_line"
android:textColorLink="@color/transparent"
android:textSize="@dimen/normal_text"/>
<View
android:layout_
android:layout_
android:layout_marginLeft="@dimen/med_padding"
android:layout_marginRight="@dimen/med_padding"
android:background="@color/new_chat_header"
/>
<EditText
android:id="@+id/editText_company"
android:layout_
android:layout_
android:layout_marginBottom="@dimen/med_padding"
android:layout_marginLeft="@dimen/med_padding"
android:layout_marginRight="@dimen/med_padding"
android:layout_marginTop="@dimen/med_padding"
android:layout_weight="1"
android:background="@null"
android:ems="10"
android:gravity="left|center_vertical"
android:hint="@string/company_name"
android:inputType="textPersonName"
android:textColor="@color/black"
android:textColorHint="@color/grey_line"
android:textColorLink="@color/transparent"
android:textSize="@dimen/normal_text"/>
<View
android:layout_
android:layout_
android:layout_marginLeft="@dimen/med_padding"
android:layout_marginRight="@dimen/med_padding"
android:background="@color/new_chat_header"
/>
<EditText
android:id="@+id/editText_address"
android:layout_
android:layout_
android:layout_marginBottom="@dimen/med_padding"
android:layout_marginLeft="@dimen/med_padding"
android:layout_marginRight="@dimen/med_padding"
android:layout_marginTop="@dimen/med_padding"
android:layout_weight="1"
android:background="@null"
android:ems="10"
android:gravity="left|center_vertical"
android:hint="@string/address"
android:inputType="textPersonName"
android:textColor="@color/black"
android:textColorHint="@color/grey_line"
android:textColorLink="@color/transparent"
android:textSize="@dimen/normal_text"/>
<View
android:layout_
android:layout_
android:layout_marginLeft="@dimen/med_padding"
android:layout_marginRight="@dimen/med_padding"
android:background="@color/new_chat_header"
/>
</LinearLayout>
</LinearLayout>
<LinearLayout
android:layout_
android:layout_
android:layout_marginBottom="@dimen/min_padding"
android:layout_marginTop="@dimen/med_below_padding"
android:gravity="center_vertical"
android:orientation="horizontal">
<ImageView
android:layout_
android:layout_
android:padding="@dimen/med_below_padding"
app:srcCompat="@drawable/addbutton"/>
<EditText
android:id="@+id/editText_phone"
android:layout_
android:layout_
android:layout_marginRight="@dimen/med_padding"
android:layout_weight="1"
android:background="@null"
android:ems="10"
android:gravity="left|center_vertical"
android:hint="@string/phone_number"
android:inputType="number"
android:textColor="@color/black"
android:textColorHint="@color/grey_line"
android:textColorLink="@color/transparent"
android:textSize="@dimen/normal_text"/>
</LinearLayout>
<View
android:layout_
android:layout_
android:layout_marginLeft="@dimen/med_padding"
android:layout_marginRight="@dimen/med_padding"
android:background="@color/new_chat_header"
/>
<LinearLayout
android:layout_
android:layout_
android:layout_marginBottom="@dimen/min_padding"
android:layout_marginTop="@dimen/med_below_padding"
android:gravity="center_vertical"
android:orientation="horizontal">
<ImageView
android:layout_
android:layout_
android:padding="@dimen/med_below_padding"
app:srcCompat="@drawable/addbutton"/>
<EditText
android:id="@+id/editText_office_phone"
android:layout_
android:layout_
android:layout_marginRight="@dimen/med_padding"
android:layout_weight="1"
android:background="@null"
android:ems="10"
android:gravity="left|center_vertical"
android:hint="@string/office_number"
android:inputType="number"
android:textColor="@color/black"
android:textColorHint="@color/grey_line"
android:textColorLink="@color/transparent"
android:textSize="@dimen/normal_text"/>
</LinearLayout>
<View
android:layout_
android:layout_
android:layout_marginLeft="@dimen/med_padding"
android:layout_marginRight="@dimen/med_padding"
android:background="@color/new_chat_header"
/>
<LinearLayout
android:layout_
android:layout_
android:layout_marginBottom="@dimen/min_padding"
android:layout_marginTop="@dimen/med_below_padding"
android:orientation="horizontal">
<ImageView
android:layout_
android:layout_
android:padding="@dimen/med_below_padding"
app:srcCompat="@drawable/addbutton"/>
<EditText
android:id="@+id/editText_addemail"
android:layout_
android:layout_
android:layout_marginRight="@dimen/med_padding"
android:layout_weight="1"
android:background="@null"
android:ems="10"
android:gravity="left|center_vertical"
android:hint="@string/email_address"
android:inputType="textPersonName"
android:textColor="@color/black"
android:textColorHint="@color/grey_line"
android:textColorLink="@color/transparent"
android:textSize="@dimen/normal_text"/>
</LinearLayout>
<View
android:layout_
android:layout_
android:layout_marginLeft="@dimen/med_padding"
android:layout_marginRight="@dimen/med_padding"
android:background="@color/new_chat_header"
/>
<LinearLayout
android:layout_
android:layout_
android:layout_marginBottom="@dimen/min_padding"
android:layout_marginTop="@dimen/med_below_padding"
android:orientation="horizontal">
<ImageView
android:layout_
android:layout_
android:padding="@dimen/med_below_padding"
app:srcCompat="@drawable/addbutton"/>
<EditText
android:id="@+id/editText_url"
android:layout_
android:layout_
android:layout_marginRight="@dimen/med_padding"
android:layout_weight="1"
android:background="@null"
android:ems="10"
android:gravity="left|center_vertical"
android:hint="@string/add_url"
android:inputType="textPersonName"
android:textColor="@color/black"
android:textColorHint="@color/grey_line"
android:textColorLink="@color/transparent"
android:textSize="@dimen/normal_text"/>
</LinearLayout>
<View
android:layout_
android:layout_
android:layout_marginLeft="@dimen/med_padding"
android:layout_marginRight="@dimen/med_padding"
android:background="@color/new_chat_header"
/>
<TextView
android:id="@+id/del_txt"
android:layout_
android:layout_
android:layout_margin="@dimen/med_padding"
android:background="@color/sharp_green"
android:padding="@dimen/med_below_padding"
android:text="@string/delete"
android:textColor="@color/white"
android:textSize="@dimen/btn_text"
android:visibility="gone"/>
<!--</LinearLayout>-->
<!--</ScrollView>-->
</LinearLayout>
</RelativeLayout>
现在当我打开键盘时,它与底部的 EditText 重叠
我在清单中使用以下标签
android:windowSoftInputMode="stateHidden|adjustResize"
另外如果我不在java中使用下面的它工作正常
getWindow().setFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS ,WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
但我必须使用上面的行才能使状态栏变成半透明。
总体而言,互联网上有实现愿望行为的代码,但都没有FLAG_TRANSLUCENT_STATUS
。
有什么帮助吗?
谢谢。
【问题讨论】:
我不确定,但您可以尝试删除清单中的 stateHidden 吗?并添加adjustPan adjustPan 正在向上移动整个屏幕。我希望橙色部分位于同一位置,而白色部分向上移动。 【参考方案1】:试试这个,
您缺少以下属性:
android:fitsSystemWindows="true"
在 fragment.xml 布局的根 RelativeLayout 中(或者可能在活动布局上,不确定,因为我们没有您应用的完整结构)
【讨论】:
但这会移除状态栏的半透明 好的,你能尝试删除 stateHidden 并使用 adjustPan 进行键盘模式 adjustPan 正在向上移动整个屏幕。我希望橙色部分位于同一位置,而白色部分向上移动。【参考方案2】:试试这个,
我已经改变了滚动视图的位置。你会尝试一次吗?
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_
android:layout_
android:fitsSystemWindows="true">
<RelativeLayout
android:id="@+id/toolbar"
android:layout_
android:layout_
android:layout_alignParentStart="true"
android:layout_alignParentTop="true"
android:background="@color/black"
android:paddingTop="20dp">
<LinearLayout
android:layout_
android:layout_
android:weightSum="11"
>
<ImageView
android:id="@+id/back_img"
android:layout_
android:layout_
android:padding="@dimen/med_below_padding"
android:src="@drawable/back_arrow"
/>
<TextView
android:id="@+id/from_txt"
android:layout_
android:layout_
android:layout_weight="2"
android:gravity="center_vertical"
android:paddingBottom="@dimen/min_padding"
android:paddingTop="@dimen/min_padding"
android:singleLine="true"
android:text="@string/id_my_business_card"
android:textColor="@color/white"
android:textSize="@dimen/normal_text"
/>
<TextView
android:id="@+id/textView8"
android:layout_
android:layout_
android:layout_weight="7"
android:gravity="center"
android:text="@string/id_add_new_business_card"
android:textColor="@color/white"
android:textSize="@dimen/top_heading"/>
<TextView
android:id="@+id/textView_add"
android:layout_
android:layout_
android:layout_margin="13dp"
android:layout_weight="2"
android:background="@drawable/white_border"
android:gravity="center"
android:src="@drawable/camerasection_flipcamera"
android:text="@string/add"
android:textColor="@color/white"
android:textSize="@dimen/normal_text"
/>
</LinearLayout>
</RelativeLayout>
<ScrollView
android:id="@+id/mScroller"
android:layout_
android:layout_
android:fillViewport="true">
<RelativeLayout
android:id="@+id/edit_message_layout"
android:layout_
android:layout_
android:layout_alignParentBottom="true">
<LinearLayout
android:layout_
android:layout_
android:layout_marginTop="70dp"
android:background="@drawable/border_top_rounded"
android:gravity="right"
android:orientation="vertical"
android:paddingLeft="10dp"
android:paddingRight="10dp"
android:paddingTop="@dimen/med_below_padding">
<!--<ScrollView-->
<!--android:layout_-->
<!--android:layout_>-->
<!--<LinearLayout-->
<!--android:layout_-->
<!--android:layout_-->
<!--android:orientation="vertical">-->
<LinearLayout
android:layout_
android:layout_
android:gravity="top|center_vertical"
android:orientation="horizontal">
<ImageView
android:id="@+id/imageView_profile"
android:layout_
android:layout_
android:layout_margin="@dimen/general_margin"
android:clickable="true"
android:visibility="gone"
app:srcCompat="@drawable/chatcontacticon"/>
<LinearLayout
android:layout_
android:layout_
android:orientation="vertical">
<EditText
android:id="@+id/editText_firstname"
android:layout_
android:layout_
android:layout_marginBottom="@dimen/med_padding"
android:layout_marginLeft="@dimen/med_padding"
android:layout_marginRight="@dimen/med_padding"
android:layout_marginTop="@dimen/med_below_padding"
android:layout_weight="1"
android:background="@null"
android:ems="10"
android:gravity="left|center_vertical"
android:hint="@string/first_name"
android:inputType="textPersonName"
android:textColor="@color/black"
android:textColorHint="@color/grey_line"
android:textColorLink="@color/transparent"
android:textSize="@dimen/normal_text"/>
<View
android:layout_
android:layout_
android:layout_marginLeft="@dimen/med_padding"
android:layout_marginRight="@dimen/med_padding"
android:background="@color/new_chat_header"
/>
<EditText
android:id="@+id/editText_lastname"
android:layout_
android:layout_
android:layout_marginBottom="@dimen/med_padding"
android:layout_marginLeft="@dimen/med_padding"
android:layout_marginRight="@dimen/med_padding"
android:layout_marginTop="@dimen/med_padding"
android:layout_weight="1"
android:background="@null"
android:ems="10"
android:gravity="left|center_vertical"
android:hint="@string/last_name"
android:inputType="textPersonName"
android:textColor="@color/black"
android:textColorHint="@color/grey_line"
android:textColorLink="@color/transparent"
android:textSize="@dimen/normal_text"/>
<View
android:layout_
android:layout_
android:layout_marginLeft="@dimen/med_padding"
android:layout_marginRight="@dimen/med_padding"
android:background="@color/new_chat_header"
/>
<EditText
android:id="@+id/editText_company"
android:layout_
android:layout_
android:layout_marginBottom="@dimen/med_padding"
android:layout_marginLeft="@dimen/med_padding"
android:layout_marginRight="@dimen/med_padding"
android:layout_marginTop="@dimen/med_padding"
android:layout_weight="1"
android:background="@null"
android:ems="10"
android:gravity="left|center_vertical"
android:hint="@string/company_name"
android:inputType="textPersonName"
android:textColor="@color/black"
android:textColorHint="@color/grey_line"
android:textColorLink="@color/transparent"
android:textSize="@dimen/normal_text"/>
<View
android:layout_
android:layout_
android:layout_marginLeft="@dimen/med_padding"
android:layout_marginRight="@dimen/med_padding"
android:background="@color/new_chat_header"
/>
<EditText
android:id="@+id/editText_address"
android:layout_
android:layout_
android:layout_marginBottom="@dimen/med_padding"
android:layout_marginLeft="@dimen/med_padding"
android:layout_marginRight="@dimen/med_padding"
android:layout_marginTop="@dimen/med_padding"
android:layout_weight="1"
android:background="@null"
android:ems="10"
android:gravity="left|center_vertical"
android:hint="@string/address"
android:inputType="textPersonName"
android:textColor="@color/black"
android:textColorHint="@color/grey_line"
android:textColorLink="@color/transparent"
android:textSize="@dimen/normal_text"/>
<View
android:layout_
android:layout_
android:layout_marginLeft="@dimen/med_padding"
android:layout_marginRight="@dimen/med_padding"
android:background="@color/new_chat_header"
/>
</LinearLayout>
</LinearLayout>
<LinearLayout
android:layout_
android:layout_
android:layout_marginBottom="@dimen/min_padding"
android:layout_marginTop="@dimen/med_below_padding"
android:gravity="center_vertical"
android:orientation="horizontal">
<ImageView
android:layout_
android:layout_
android:padding="@dimen/med_below_padding"
app:srcCompat="@drawable/addbutton"/>
<EditText
android:id="@+id/editText_phone"
android:layout_
android:layout_
android:layout_marginRight="@dimen/med_padding"
android:layout_weight="1"
android:background="@null"
android:ems="10"
android:gravity="left|center_vertical"
android:hint="@string/phone_number"
android:inputType="number"
android:textColor="@color/black"
android:textColorHint="@color/grey_line"
android:textColorLink="@color/transparent"
android:textSize="@dimen/normal_text"/>
</LinearLayout>
<View
android:layout_
android:layout_
android:layout_marginLeft="@dimen/med_padding"
android:layout_marginRight="@dimen/med_padding"
android:background="@color/new_chat_header"
/>
<LinearLayout
android:layout_
android:layout_
android:layout_marginBottom="@dimen/min_padding"
android:layout_marginTop="@dimen/med_below_padding"
android:gravity="center_vertical"
android:orientation="horizontal">
<ImageView
android:layout_
android:layout_
android:padding="@dimen/med_below_padding"
app:srcCompat="@drawable/addbutton"/>
<EditText
android:id="@+id/editText_office_phone"
android:layout_
android:layout_
android:layout_marginRight="@dimen/med_padding"
android:layout_weight="1"
android:background="@null"
android:ems="10"
android:gravity="left|center_vertical"
android:hint="@string/office_number"
android:inputType="number"
android:textColor="@color/black"
android:textColorHint="@color/grey_line"
android:textColorLink="@color/transparent"
android:textSize="@dimen/normal_text"/>
</LinearLayout>
<View
android:layout_
android:layout_
android:layout_marginLeft="@dimen/med_padding"
android:layout_marginRight="@dimen/med_padding"
android:background="@color/new_chat_header"
/>
<LinearLayout
android:layout_
android:layout_
android:layout_marginBottom="@dimen/min_padding"
android:layout_marginTop="@dimen/med_below_padding"
android:orientation="horizontal">
<ImageView
android:layout_
android:layout_
android:padding="@dimen/med_below_padding"
app:srcCompat="@drawable/addbutton"/>
<EditText
android:id="@+id/editText_addemail"
android:layout_
android:layout_
android:layout_marginRight="@dimen/med_padding"
android:layout_weight="1"
android:background="@null"
android:ems="10"
android:gravity="left|center_vertical"
android:hint="@string/email_address"
android:inputType="textPersonName"
android:textColor="@color/black"
android:textColorHint="@color/grey_line"
android:textColorLink="@color/transparent"
android:textSize="@dimen/normal_text"/>
</LinearLayout>
<View
android:layout_
android:layout_
android:layout_marginLeft="@dimen/med_padding"
android:layout_marginRight="@dimen/med_padding"
android:background="@color/new_chat_header"
/>
<LinearLayout
android:layout_
android:layout_
android:layout_marginBottom="@dimen/min_padding"
android:layout_marginTop="@dimen/med_below_padding"
android:orientation="horizontal">
<ImageView
android:layout_
android:layout_
android:padding="@dimen/med_below_padding"
app:srcCompat="@drawable/addbutton"/>
<EditText
android:id="@+id/editText_url"
android:layout_
android:layout_
android:layout_marginRight="@dimen/med_padding"
android:layout_weight="1"
android:background="@null"
android:ems="10"
android:gravity="left|center_vertical"
android:hint="@string/add_url"
android:inputType="textPersonName"
android:textColor="@color/black"
android:textColorHint="@color/grey_line"
android:textColorLink="@color/transparent"
android:textSize="@dimen/normal_text"/>
</LinearLayout>
<View
android:layout_
android:layout_
android:layout_marginLeft="@dimen/med_padding"
android:layout_marginRight="@dimen/med_padding"
android:background="@color/new_chat_header"
/>
<TextView
android:id="@+id/del_txt"
android:layout_
android:layout_
android:layout_margin="@dimen/med_padding"
android:background="@color/sharp_green"
android:padding="@dimen/med_below_padding"
android:text="@string/delete"
android:textColor="@color/white"
android:textSize="@dimen/btn_text"
android:visibility="gone"/>
<!--</LinearLayout>-->
<!--</ScrollView>-->
</LinearLayout>
</RelativeLayout>
</ScrollView>
</RelativeLayout>
【讨论】:
试过但没有运气。 我和两者都核对过。对于 adjustPan 所有布局都向上移动,而使用 adjustResize 则没有任何反应。 @SyedaZunairah 我已经更新了我的答案试试。我也没有在清单中设置任何属性。 你检查过其他答案吗?我不能使用 android:fitsSystemWindows="true" 因为这将删除状态栏的半透明以上是关于如果状态栏是半透明的,则键盘隐藏 EditText的主要内容,如果未能解决你的问题,请参考以下文章
在android中点击EditText的时候会弹出软键盘,这时候如果想隐藏软键盘或者填完内容后点其他的地方直接隐藏
Flutter监听滚动动作 控制组件 透明度渐变 ( 移除顶部状态栏空白 | 帧布局组件 | 透明度组件 | 监听滚动组件 )