按钮文本周围的填充过多

CL2*_*L22 3 android textview android-button

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

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

在此处输入图片说明

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

编辑:我想避免使用图像,因为如果我有 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>
Run Code Online (Sandbox Code Playgroud)

我曾尝试将以下行添加到 Buttons,但它只会产生很小的差异(如果有):

android:padding="0dp"
Run Code Online (Sandbox Code Playgroud)

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

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

Vik*_*ram 5

Button不是适合您的目的的小部件。改用一个ImageButton(甚至一个ImageView)。

我打算根据按钮大小以编程方式更改字体大小,例如针对不同的屏幕大小

您当前的方法会使您遇到很多关于 UI 组件大小适当的问题。鉴于 Android 设备过多,屏幕尺寸只是问题的一个方面。您还将处理不同的屏幕密度。最好的方法是使用大小/密度桶(drawable-mdpi/hdpi/xhdpi)。帮助安卓为你工作。

使用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
Run Code Online (Sandbox Code Playgroud)

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

输出:

@ 可绘制尺寸 32dp:

在此处输入图片说明

@ 可绘制大小 64d​​p

在此处输入图片说明

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