我有一个占据整个屏幕的 fragment ,带有按钮和一个可缩放以适合它的 SeekBar,以及固定大小的 TextView。我使用带有权重的线性水平和垂直布局来实现这一点。
问题是如果不扩大按钮的大小,我就无法将按钮文本设置得足够大。出于某种原因,任何大于 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>
我已经尝试将以下行添加到按钮,但如果有的话,它只会产生很小的差异:
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
来指示next
和previous
。如果您担心可绘制对象对于平板电脑屏幕而言太小,请创建适当的可绘制对象资源/文件夹:
// 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:
@drawable 大小 64dp
现在它变得非常简单 - 通过在手机、7 英寸平板电脑和 10 英寸平板电脑上进行目视检查来确定可绘制对象的大小。然后使用密度标度在我上面提到的文件夹中创建和存储适当大小的可绘制对象。让 android 处理从哪个 bucket 中挑选。
关于android - 按钮文本周围的填充过多,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25056601/