安卓EditText始终有底部内边距

8
这是我的ListView XML代码:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <ListView
        android:id="@+list/list_view"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:background="@drawable/defaultbg"
        android:drawSelectorOnTop="false" />

    <ImageButton
        android:id="@+list/filter_button"
        android:layout_width="30dp"
        android:layout_height="30dp"
        android:layout_alignParentBottom="true"
        android:layout_alignParentRight="true"
        android:background="@android:color/transparent"
        android:contentDescription="@string/SmallLogo"
        android:scaleType="fitXY"
        android:src="@drawable/filter" />

    <!-- empty view -->

    <TextView
        android:id="@+list/empty"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:background="@drawable/defaultbg"
        android:gravity="center"
        android:text="@string/whos_around_empty_text"
        android:textAppearance="@android:style/TextAppearance.Medium"
        android:textColor="@android:color/white"
        android:textStyle="bold" />

    <EditText
        android:id="@+list/filter"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_alignParentLeft="true"
        android:hint="@string/search"                
        android:visibility="visible"/>
</RelativeLayout>

EditText位于视图的底部,但由于某种原因它与底部没有紧密连接。仔细检查后发现布局确实在底部 - 但是内部的白色背景并没有覆盖整个布局(就像当ImageView的大小大于布局大小且使用scaleType时一样)。对我来说,EditText紧贴底部非常重要...有什么想法吗?更新:添加屏幕截图:如您所见,EditText白色背景的底部与屏幕的底部不对齐...尽管布局本身已经对齐。

那不起作用...它消失了。 - Asaf Nevo
正如我所说 - 布局很紧凑...问题是在布局内部有一些背景颜色的填充..我会在问题中添加图片。 - Asaf Nevo
我不确定具体的问题,但您在同一布局中使用了listview和其他视图,并将高度设置为wrap_content,这从来都不是一个好主意,因为它会导致其扩大并推动其他视图。当您完全删除listview时,会发生什么? - MikeIsrael
你好 @AsafNevo!你找到解决方案了吗?我遇到了一个扩展EditText类的相同问题!令人惊讶的是,对此几乎没有太多关注:EditText本质上并不是居中的 :( 实际上有一个内置的底部填充,非常令人烦恼。 我通过在相邻按钮下添加一些等效的边距来解决我的问题,因为我不需要严格将其粘贴到封闭框架的底部。 - Poutrathor
@Poutrathor,感谢您的解决方案。我必须说我不太记得了 :) 这是一个旧项目,但我猜我以某种方式解决了它。 在阅读这里的帖子时,我会考虑将EditText的背景可绘制项更改为没有填充的新XML可绘制项。我猜EditText的默认背景可绘制项有一些填充。 - Asaf Nevo
显示剩余4条评论
2个回答

5
在Android中,所有小部件都有一定的内边距和外边距,以便更好地显示。每个小部件都有4dp的外边距和8dp的内边距。如果您不想要这样的效果,可以创建一个自定义视图。
目前为止,可以尝试使用负像素值在底部设置外边距。
android:layout_marginBottom="-4dp"

在我的布局中运行良好


感谢您的回答。首先,正如您在我的截图中所看到的,问题不在于边距。可能是填充。其次,我尝试将其更改为android:paddingBottom="-8dp",但没有任何变化。 - Asaf Nevo
@Asaf Nevo 我并不是说要将padding设置为-8dp,我是在告诉你要设置margin。请看一下代码先生。 - Hisham Muneer
我尝试过了,但没有任何变化... 可能与layout_alignParentBottom="true"有关吗? - Asaf Nevo

0

试试这个,我已经做了那个屏幕。

enter image description here

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >

<TextView
    android:id="@+id/empty"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center"
    android:gravity="center"

    android:text="@string/whos_around_empty_text"
    android:background="@drawable/defaultbg"
    android:textAppearance="@android:style/TextAppearance.Medium"
    android:textColor="@android:color/white"
    android:textStyle="bold" />

<RelativeLayout
    android:id="@id/relative"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true" >

    <ImageButton
        android:id="@+list/filter_button"
        android:layout_width="30dp"
        android:layout_height="30dp"
        android:layout_alignParentRight="true"
        android:background="@android:color/transparent"
        android:contentDescription="Smalllogo"
        android:scaleType="fitXY"
        android:src="@drawable/filter" />

    <!-- empty view -->

    <EditText
        android:id="@+list/filter"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:hint="Search"
        android:visibility="visible" />
</RelativeLayout>

<ListView
    android:id="@+id/list_view"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:background="@drawable/defaultbg"
    android:layout_above="@id/relative"
    android:layout_below="@id/empty"
    android:drawSelectorOnTop="false" />


请说明您进行了哪种类型的更改? - RobinHood
它确实按照您所说的工作,但我希望ImageButton和EditText浮动在ListView或EmptyTextView上方,而不是在其下方。 - Asaf Nevo
假设ListView没有任何项,那么EditText应该出现在底部。 - MuraliGanesan
你的代码截图显示,它确实出现了,但是你的代码将我的EditText定位在当前视图(ListView或EmptyTextView)下方。我希望它可以浮动在上面。 - Asaf Nevo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接