2

我的应用程序中有一些可关闭的视图,并且标题中有一个关闭按钮。我想让这个按钮无边框且很小。
编码:

<ImageButton
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    style="?android:attr/borderlessButtonStyle"
    android:layout_margin="0dp"
    android:padding="0dp"
    android:src="@android:drawable/ic_menu_close_clear_cancel"/>

结果该按钮是无边框的,但在十字图像周围有很多空白位置(在屏幕截图上点击按钮以使空白区域可见)我该如何解决?

4

5 回答 5

7

你应该使用:

  android:background="?selectableItemBackgroundBorderless"
于 2018-04-05T14:10:08.977 回答
3

添加

 android:minHeight="0dp"
 android:minWidth="0dp"
 android:padding="2dp"

结果此外,我将使用负边距将按钮放置在靠近角落的位置。

于 2016-09-08T14:04:03.963 回答
0

您可以在 ImageButton 上使用以下内容来删除“边框”:

android:background="@android:color/transparent"

或者

android:background="@null"

如果您想在用户单击按钮时更改背景,您可以创建一个选择器。示例ImageButton 在单击时不突出显示透明背景

于 2016-09-08T13:53:08.567 回答
0

随着 的引入ConstraintLayout,您可以使用约束来减少无边框的宽度ImageButton,默认情况下太宽了,通过将其限制为与高度一样宽:

<android.support.constraint.ConstraintLayout 
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/my_closeable_view"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <ImageButton
        style="?android:attr/borderlessButtonStyle"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:contentDescription="@string/action_close"
        android:src="@android:drawable/ic_menu_close_clear_cancel"
        app:layout_constraintDimensionRatio="w,1:1"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

</android.support.constraint.ConstraintLayout>

我不建议您将其设置得比这更小,因为触摸目标需要至少为 48dp x 48dp,就像Google 的 Material Design 指南一样,否则用户将很难尝试触摸它。

如果您真的需要它看起来更接近视图的边缘,您始终可以使用未居中的图像(在一侧或两侧具有透明填充),但我会尽力避免这样做解决方法和尝试重新考虑我的应用程序的设计,以便按原样容纳按钮。

于 2018-05-24T11:47:03.047 回答
-1

为此使用 textView.. 并使用 textview.OnTouchListener 最后 onTouch 更改文本的颜色.. 就是这样

否则在您的代码中只需使用

     android:background="@null"
于 2016-09-08T13:40:31.813 回答