Android - 从EditText

时间:2015-08-21 19:12:16

标签: android android-layout

我的EditText应用中有Android

<EditText
     android:id="@+id/txtName"
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
     android:layout_gravity="center"
     android:layout_marginLeft="20dp"
     android:layout_marginRight="20dp"
     android:layout_marginTop="15dp"
     android:text=""
     android:hint="Name"
     android:width="150dp"
     android:height="50dp"
     android:background="@drawable/rounded_corners" />

当我在上面输入内容时,它的下划线。

我知道这是因为Android的自动建议而且可以通过android:inputType="textNoSuggestions"来解决,所以请避免回答只是告诉我我所知道的

问题在我将上面添加的属性添加到EditText时出现,因为它会更改其形式。例如,如果EditText喜欢它:

┌───────────────────────────────────────────┐
|                                           |
└───────────────────────────────────────────┘

当我将属性android:inputType="textNoSuggestions"的形式更改添加到这样的内容时:

┌───────────────────────────────────────────┐
└───────────────────────────────────────────┘

在布局的底部出现一个白色的块(可能是因为EditText是白色的,我想是这样),其大小或多或少是EditText已经改变的(第二个) )但在这个块我无法互动。像这样:

┌───────────────────────────────────────────┐
|                 LAYOUT                    |
|                                           |
|    //EditText changed                     |
|  ┌──────────────────────────────────┐     |
|  └──────────────────────────────────┘     |
|                                           |
|                                           |
|                                           |
|                                           |
|                                           |
|                                           |
|                                           |
|                                           |
|                                           |
|                                           |
|  //Block at the end of the Layout         |
├───────────────────────────────────────────┤                                           
└───────────────────────────────────────────┘

当我在android:inputType="textNoSuggestions"上手动输入单词时,使用属性EditText它们不是下划线但是当我使用键盘的Swype功能时,它们会再次显示下划线。

另外,如果它在Layout的底部创建一个块,我不希望这个属性更改EditText

因此,我想知道

1)是否可以完全删除输入EditText的字词的下划线?无论是Swype还是其他任何方式都是手动无关紧要。

2)如何删除EditText字词的下划线但不更改EditText或我的Layout上出现了某个块?

编辑:在这里,我添加了两张照片,您可以在其中看到问题:

1)在添加属性之前。

enter image description here

2)添加属性后。

enter image description here

编辑2 :这是我的rounded_corners背景:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" >

    <stroke
        android:width="1dp"
        android:color="#FFFFFFFF" />

    <solid android:color="#FFFFFFFF" />

    <padding
        android:left="1dp"
        android:right="1dp"
        android:top="1dp" />

    <corners android:radius="5dp"/>

</shape>

提前致谢!

2 个答案:

答案 0 :(得分:1)

我认为EditText上缺少顶部/底部填充是由两个因素引起的:

1 - 原始的EditText有一个9-patch背景图片,里面有填充。我不太可能知道你的rounded_corners drawable是如何构建的,但我倾向于相信这不是一个9补丁图像(或者如果它是,没有内置填充) 2 - 我认为EditText在文本周围分配一些空间,以便它可以显示某些额外的元素。例如,文本下方的一行,在启用建议模式时使用。当建议模式关闭时,不再需要该空间。

这两个中的任何一个都会在文本上保留一些填充。把他们带走,没有填充(当然,我们不计算EditText上任何明确的顶部和底部填充集。)

因此解决方案是将背景图像构建为9-patch并在其中包含填充(您可以将原始背景作为示例)或明确设置一些填充。

对于屏幕底部的白色区域 - 您的黄色布局是否设置为wrap_content高度?如果是,请将其设置为match_parent,以便不依赖于所包含元素的高度。

答案 1 :(得分:1)

解决问题的解决方案EditText

最后,我找到了解决我EditText问题的解决方案。我把它放在这里因为我觉得它对另一个人有帮助。我将把问题分成两个解决方案。

首先,如何删除布局底部的白色块

正如N.T所说(谢谢!),我只需要将我的黄色版面android:layout_height更改为match_parent

第二个,如何让EditText不要如此减少

我只需删除这些属性:

android:width="150dp"
android:height="50dp"

并添加其他内容:

android:inputType="textCapSentences|textMultiLine|textNoSuggestions"
android:minLines="2"

现在全部EditText如下:

<EditText
     android:id="@+id/txtName"
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
     android:layout_gravity="center"
     android:layout_marginLeft="20dp"
     android:layout_marginRight="20dp"
     android:layout_marginTop="15dp"
     android:text=""
     android:hint="Name"
     android:inputType="textCapSentences|textMultiLine|textNoSuggestions"
     android:minLines="2"
     android:background="@drawable/rounded_corners" />

完全停止下线的解决方案

您必须将textVisiblePassword添加到inputType。使用此值,您只能逐个输入字母,因此下划线不会出现。

它不允许您使用Swype模式键入单词,因此下划线永远不会出现。

inputType必须像:

android:inputType="textCapSentences|textMultiLine|textNoSuggestions|textVisiblePassword"