Android EditText 展开为对话框
Posted
技术标签:
【中文标题】Android EditText 展开为对话框【英文标题】:Android EditText expands to dialog 【发布时间】:2013-02-28 06:12:49 【问题描述】:我有这个布局
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_
android:layout_
android:orientation="vertical" >
<LinearLayout
android:id="@+id/viewer_top"
android:layout_
android:layout_
android:background="@android:color/background_dark"
android:orientation="horizontal" >
<RelativeLayout
android:layout_
android:layout_
android:layout_marginLeft="4dp"
android:layout_marginRight="4dp"
android:layout_marginTop="5dp"
android:layout_marginBottom="3dp"
android:layout_weight="1" >
<EditText
android:id="@+id/viewer_filter"
android:layout_
android:layout_
android:hint="@string/hint_filter"
android:background="@android:color/white"
android:drawableLeft="@android:drawable/ic_menu_search"
android:inputType="text"
android:paddingLeft="4dp"
android:selectAllOnFocus="true" >
</EditText>
<ImageView
android:id="@+id/viewer_filterX"
android:layout_
android:layout_
android:layout_alignTop="@id/viewer_filter"
android:layout_alignRight="@id/viewer_filter"
android:src="@android:drawable/ic_menu_close_clear_cancel"
android:visibility="invisible" >
</ImageView>
</RelativeLayout>
<RelativeLayout
android:layout_
android:layout_
android:layout_marginLeft="4dp"
android:layout_marginRight="4dp"
android:layout_marginTop="3dp"
android:layout_marginBottom="5dp"
android:layout_weight="1" >
<EditText
android:id="@+id/viewer_search"
android:layout_
android:layout_
android:hint="@string/hint_search"
android:background="@android:color/white"
android:drawableLeft="@android:drawable/ic_menu_search"
android:inputType="text"
android:paddingLeft="4dp"
android:selectAllOnFocus="true" >
</EditText>
<ImageView
android:id="@+id/viewer_searchGo"
android:layout_
android:layout_
android:layout_alignTop="@id/viewer_search"
android:layout_alignRight="@id/viewer_search"
android:src="@android:drawable/ic_menu_send"
android:visibility="invisible" >
</ImageView>
<ImageView
android:id="@+id/viewer_searchX"
android:layout_
android:layout_
android:layout_alignTop="@id/viewer_search"
android:layout_toLeftOf="@id/viewer_searchGo"
android:src="@android:drawable/ic_menu_close_clear_cancel"
android:visibility="invisible" >
</ImageView>
</RelativeLayout>
</LinearLayout>
<HorizontalScrollView
android:id="@+id/viewer_hscroll"
android:layout_
android:layout_
android:layout_below="@id/viewer_top" >
<ListView
android:id="@+id/viewer_list"
android:layout_
android:layout_ >
</ListView>
</HorizontalScrollView>
</RelativeLayout>
当我单击任一 EditText 时,它会展开到此对话框:
在纵向模式下,EditTexts 可以按原样编辑而无需展开。肖像的 XML 类似,只是 EditTexts 是一个在另一个之下并且是屏幕宽的。
如何防止这种 EditText 扩展? EditText + 虚拟键盘不仅隐藏了整个手机屏幕,而且我放置在 EditText 上的可点击图像也不可见。
我尝试将 EditText layout_width 设置为 0dp,但它们不显示。 我没有使用 SearchViews,因为它们会窃取焦点,我无法使用返回键返回上一个活动。更新 我删除了 layout-land XML,并为纵向和横向使用了相同的 XML。 在纵向模式下很好,没有扩展,在横向模式下有扩展。 所以它在某种程度上与处于横向模式有关。
【问题讨论】:
创建横向布局 @shreeshas 这是横向的布局,我写了纵向的XML类似,但不同。 您好在清单文件中使用 android:windowSoftInputMode="adjustPan|stateHidden" 参数 @itsrajesh4uguys 我发布了解决方案,它是 IME 属性。 【参考方案1】:将此行添加到您的编辑文本中
android:imeOptions="flagNoFullscreen"
编辑文本如下所示
<EditText
android:id="@+id/viewer_filter"
android:layout_
android:layout_
android:hint="hint_filter"
android:background="@android:color/white"
android:drawableLeft="@android:drawable/ic_menu_search"
android:inputType="text"
android:paddingLeft="4dp"
android:selectAllOnFocus="true"
android:imeOptions="flagNoFullscreen">
【讨论】:
【参考方案2】:尝试将android:maxLines="1"
用于EditText
【讨论】:
刚刚试了一下,没有变化【参考方案3】:我有类似的问题。您可以使用 mEditText.setSingleLine(true);你在哪里使用它。这将解决您的问题。
【讨论】:
试过了 setSingleLine() 和 setSingleLine(true),没有变化【参考方案4】:您好,请在声明您的编辑文本的 java 代码中添加这一行 description.setMaxLines(1);
【讨论】:
这个解决方案已经发布,不起作用。 ::: 我已经发布了正确的解决方案。【参考方案5】:This post解决了同样的问题并有解决方案
需要补充
android:imeOptions="flagNoExtractUi"
以防止这种行为。
如果有人知道怎么做,请将此帖子标记为重复。
【讨论】:
以上是关于Android EditText 展开为对话框的主要内容,如果未能解决你的问题,请参考以下文章
Android- 使用 EditText 帮助修复自定义警报对话框