android - 按钮文本周围的填充过多

标签 android textview android-button

我有一个占据整个屏幕的 fragment ,带有按钮和一个可缩放以适合它的 SeekBar,以及固定大小的 TextView。我使用带有权重的线性水平和垂直布局来实现这一点。

问题是如果不扩大按钮的大小,我就无法将按钮文本设置得足够大。出于某种原因,任何大于 35sp 的文本大小都会使按钮展开,无论按钮有多大。此屏幕截图显示按钮大小有足够的空间用于文本:

enter image description here

理想情况下,我希望“<”和“>”字符填充按钮。 (我打算根据按钮大小以编程方式更改字体大小,例如针对不同的屏幕大小)但没有尝试,因为我什至无法让静态布局工作。

编辑:我想避免使用图像,因为如果我有 15 个按钮和 8 个桶,那么我需要 120 张图像!

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/VerticalLinearLayout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:paddingBottom="0dp"
    android:paddingLeft="0dp"
    android:paddingRight="0dp"
    android:paddingTop="0dp" >

    <!-- ........ -->

    <TextView
        android:id="@+id/trackTextView"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceLarge" />

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_weight="2" >

        <Button
            android:id="@+id/trackPreviousButton"
            style="android:buttonBarStyle"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:text="@string/button_track_previous"
            android:textSize="35sp" />

        <Button
            android:id="@+id/trackNextButton"
            style="android:buttonBarStyle"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:text="@string/button_track_next"
            android:textSize="35sp" />

    </LinearLayout>

    <SeekBar
        android:id="@+id/seekBar"
        style="@style/tallerBarStyle"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1" />

    <!-- ........ -->

</LinearLayout>

我已经尝试将以下行添加到按钮,但如果有的话,它只会产生很小的差异:

android:padding="0dp"

关于获取字体高度以填充按钮而不填充的建议是我的主要问题。 (但如果动态调整文本大小以填充不同屏幕尺寸的按钮的问题可以同时解决,那就太棒了)。

编辑:事实证明,使用较大的字体会影响线性布局高度的加权效果,这就是为什么似乎有填充的原因 - 较大的字体会增加按钮的大小,而不是因为填充(是 0) 但由于权重

最佳答案

Button 不适合您的目的。请改用 ImageButton(甚至 ImageView)。

I was going to programmatically change the font size according to the button size, e.g. for different screen sizes

您当前的方法会给您带来很多关于正确调整 UI 组件大小的问题。鉴于市场上存在过多的 Android 设备,屏幕尺寸只是问题的一方面。您还将处理不同的屏幕密度。最好的方法是使用大小/密度桶 (drawable-mdpi/hdpi/xhdpi)。帮助 android 为你工作。

使用drawables 来指示nextprevious。如果您担心可绘制对象对于平板电脑屏幕而言太小,请创建适当的可绘制对象资源/文件夹:

// Phones - 4 to 7 in
drawable-ldpi
drawable-mdpi
drawable-hdpi
drawable-xhdpi
drawable-xxhdpi

// Tablets - 7 to 10 in
drawable-large-mdpi
drawable-large-hdpi

// Tablets - 10 in
drawable-xlarge-mdpi

此列表可能并不详尽。考虑在最终确定尺寸/密度桶之前进行一些研究。

输出:

@drawable 大小 32dp:

enter image description here

@drawable 大小 64d​​p

enter image description here

现在它变得非常简单 - 通过在手机、7 英寸平板电脑和 10 英寸平板电脑上进行目视检查来确定可绘制对象的大小。然后使用密度标度在我上面提到的文件夹中创建和存储适当大小的可绘制对象。让 android 处理从哪个 bucket 中挑选。

关于android - 按钮文本周围的填充过多,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25056601/

相关文章:

android - 如何在 ionic +react + capacitor 项目中设置最低 android 版本支持?

android - 在Android中按下时如何改变颜色按钮的颜色?

Android ToggleButton 自定义样式未应用

android - 检查 Android 内容 Uri

php - 我如何通过在 Android 中使用 HttpUrlConnection 将印地语文本发送到 php 服务器

android - margin 设置为 textView 的第一行

ios - 如何使用 NSAtrribulatedString 在 UITextVIew 中突出显示多种颜色的单词?

android - 如何为 Material 按钮设置渐变背景?

android - 为 ARM/Android 交叉编译大型 C++ 项目 - 问题和注意事项

android - 在新行中在 TextView 中传递一个新字符串