2016-10-27 2 views
1

Я использую EditTexts, размещенные внутри TextInputLayouts для реализации некоторых полей ввода. Моя проблема заключается в том, что в нижней части EditTexts имеется некоторое дополнительное пространство, что очевидно, когда я помещаю несколько полей ввода друг под друга.Android: избавиться от лишнего места в нижней части EditText

Вот изображение того, что я вижу, с зазором между полями ввода, видимыми (в рамке с красным).

enter image description here

Я хочу, чтобы избавиться от этого дополнительного пространства. Настройка paddings и полей на 0 не помогла, и хотя я знаю, что могу попробовать применить отрицательные поля, мне бы очень хотелось избежать этого решения, поскольку это вызвало некоторые проблемы с тестированием пользовательского интерфейса. Кто-нибудь лучше знает, как устранить лишнее пространство?

Некоторые коды:

стилистики для EditText и TextInputLayout (обратите внимание, что значения размеров маржи по умолчанию являются все 0dp):

<style name="EditTextLayout"> 
    <item name="android:layout_height">@dimen/input_field_height</item> 
    <item name="android:minHeight">@dimen/input_field_height</item> 
    <item name="android:background">@drawable/input_field_background</item> 
    <item name="android:paddingBottom">@dimen/default_margin_bottom</item> 
    <item name="android:paddingStart">@dimen/default_margin_left</item> 
    <item name="android:paddingEnd">@dimen/default_margin_right</item> 
    <item name="android:paddingTop">@dimen/default_padding_top</item> 
    <item name="android:layout_marginBottom">@dimen/default_margin_bottom</item> 
    <item name="android:textColorHint">@color/input_field_floating_label</item> 
</style> 

<style name="EditTextTheme"> 
    <item name="android:imeOptions">actionDone</item> 
    <item name="android:maxLines">1</item> 
    <item name="colorControlNormal">@color/primary_line_color</item> 
    <item name="colorControlActivated">@color/nordea_blue</item> 
    <item name="colorControlHighlight">@color/error_color</item> 
    <item name="android:textColorPrimary">@color/input_field_text</item> 
    <item name="android:textSize">@dimen/textsize_caption</item> 
    <item name="android:textColorHint">@color/input_field_floating_label</item> 
</style> 

<style name="EditText"> 
    <item name="android:theme">@style/EditTextTheme</item> 
    <item name="android:textCursorDrawable">@drawable/cursor_blue</item> 
    <item name="android:paddingStart">@dimen/default_padding</item> 
    <item name="android:paddingEnd">@dimen/default_padding</item> 
    <item name="android:paddingTop">@dimen/input_field_floating_label_padding</item> 
    <item name="android:layout_marginBottom">@dimen/default_margin_bottom</item> 
    <item name="android:background">@drawable/input_field_divider</item> 
</style> 

Фон для EditText (сделано только, чтобы в нижней строке толще):

<?xml version="1.0" encoding="utf-8"?> 
<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item> 
     <shape android:shape="rectangle"> 
      <solid android:color="@android:color/transparent"/> 
     </shape> 
    </item> 
    <item 
     android:left="@dimen/input_field_background_side_margin" 
     android:right="@dimen/input_field_background_side_margin" 
     android:top="@dimen/input_field_background_side_margin"> 
     <shape> 
      <solid android:color="@android:color/transparent"/> 
      <stroke 
       android:width="@dimen/input_field_divider_height" 
       android:color="@color/input_field_divider_color"></stroke> 
      <padding 
       android:bottom="@dimen/testlogin_dropdown_divider_padding" 
       android:top="@dimen/input_field_floating_label_padding"/> 
     </shape> 
    </item> 
</layer-list> 

фона для TextInputLayout:

<?xml version="1.0" encoding="utf-8"?> 
<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:bottom="@dimen/inputfield_background_light_margin_bottom"> 
     <shape android:shape="rectangle"> 
      <solid android:color="@color/input_field_layout_bg"/> 
      <padding 
       android:bottom="0dp" 
       android:left="0dp" 
       android:right="0dp" /> 
     </shape> 
    </item> 
</layer-list> 

Использование:

<android.support.design.widget.TextInputLayout 
    android:id="@+id/input_container" 
    style="@style/EditTextLayout" 
    android:layout_width="match_parent" 
    android:layout_height="@dimen/input_field_height" 
    app:errorTextAppearance="@style/EditTextErrorText" 
    app:hintTextAppearance="@style/EditTextFloatingLabel" 
    tools:hint="Hint text" 
    tools:text="Label text"> 

    <android.support.design.widget.TextInputEditText 
     android:id="@+id/input_editfield" 
     style="@style/EditText" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:imeOptions="actionDone" 
     android:inputType="text|textCapSentences"/> 

</android.support.design.widget.TextInputLayout> 
+0

Вы пробовали полностью removig '' padding' и marginBottom' ? Кроме того, какой смысл во множестве 0dp 'paddings'? – NightSkyLove

+0

Я не уверен, что вы можете попробовать с изменением значений testlogin_dropdown_divider_padding и input_field_floating_label_padding в качестве тестового примера? – Raghavendra

+0

@Prad, я пробовал все это, удаляя прокладки и поля, меняя значения и т. Д. Однако, что бы я ни делал, всегда есть дополнительное пространство внизу. Даже когда я пытаюсь установить значения paddings и margin в 0, он все равно появляется. Мне интересно, знает ли кто, откуда именно это пространство, и что я могу сделать, чтобы избавиться от него. Как я сказал ранее, отрицательные поля не являются хорошими решениями для меня, поэтому я ищу альтернативы. – hildegard

ответ

0

попробовать этот

android:layout_marginTop="-10dp" 

для 2-го редактирования текста, используйте значение в соответствии с Вашего удобства

Смежные вопросы