Android 按钮周围填充过多';s文本
我有一个片段占据了整个屏幕,有按钮和一个可以缩放以适应它的SeekBar,还有固定大小的文本视图。我使用带有权重的线性水平和垂直布局来实现这一点 问题是,如果不使按钮的大小扩大,我就无法使按钮文本足够大。出于某种原因,任何大于35sp的文本大小都会使按钮展开,无论按钮有多大。此屏幕截图显示按钮大小有足够的文本空间: 理想情况下,我希望“”字符填充按钮。(我本来打算根据按钮大小以编程方式更改字体大小,例如,针对不同的屏幕大小),但没有尝试过,因为我甚至无法使静态布局正常工作 编辑:我希望避免使用图像,因为如果我有15个按钮和8个存储桶,那么我需要120个图像强> 我的主要问题是如何在没有填充的情况下让字体高度填充按钮。(但是,如果能够同时解决动态调整文本大小以填充不同屏幕大小的按钮的问题,那就太棒了)Android 按钮周围填充过多';s文本,android,textview,android-button,Android,Textview,Android Button,我有一个片段占据了整个屏幕,有按钮和一个可以缩放以适应它的SeekBar,还有固定大小的文本视图。我使用带有权重的线性水平和垂直布局来实现这一点 问题是,如果不使按钮的大小扩大,我就无法使按钮文本足够大。出于某种原因,任何大于35sp的文本大小都会使按钮展开,无论按钮有多大。此屏幕截图显示按钮大小有足够的文本空间: 理想情况下,我希望“”字符填充按钮。(我本来打算根据按钮大小以编程方式更改字体大小,例如,针对不同的屏幕大小),但没有尝试过,因为我甚至无法使静态布局正常工作 编辑:我希望避免使用
编辑:事实证明,使用较大的字体大小会影响线性布局高度的权重效果,这就是为什么会有填充-较大的字体大小会增加按钮大小,不是因为填充(为0),而是因为权重,所以有一个快速而简单的解决方案! 根据我的经验,在Android中自动调整文本大小是非常困难的,尤其是当涉及到填充时。我建议您不要使用尖括号字符,而是使用一个可绘制的图标(网上有很多箭头图标)和一个
ImageButton
。例如:
<ImageButton
android:id="@+id/trackNextButton"
style="android:buttonBarStyle"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:src="@drawable/left_arrow"
android:scaleType="fitXY"
android:padding="0dp"
android:textSize="35sp" />
通过使用不同的方法,可以改变图像的拉伸。更好的是,屏幕大小的问题得到了解决,因为您可以为不同的密度添加不同的绘图工具。
按钮
不是适合您使用的小部件。使用ImageButton
(或者甚至使用ImageView
)
我打算根据按钮大小以编程方式更改字体大小,例如,针对不同的屏幕大小
您当前的方法将使您在适当调整UI组件大小方面遇到很多问题。鉴于android设备数量过多,屏幕大小只是问题的一个方面。您还将处理不同的屏幕密度。最好的方法是使用尺寸/密度桶(可拉伸mdpi/hdpi/xhdpi)。帮助android为您工作
使用drawables
指示next
和previous
。如果您担心drawable对于平板电脑屏幕来说太小,请创建适当的drawable资源/文件夹:
// 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
这份清单可能并不详尽。在完成尺寸/密度桶之前,考虑做一些研究。< /P>
输出:
@可拉伸尺寸32dp:
@可拉伸尺寸64dp
现在它变得非常简单——通过在手机、7英寸平板电脑和10英寸平板电脑上进行目视检查来确定可拉伸尺寸。然后使用密度比例创建并存储适当大小的可绘制文件到我上面提到的文件夹中。让android来处理从哪个存储桶中选取内容。使用minWidth=“0”或“1”来减少文本按钮上的水平填充 问题在于默认情况下按钮包含
minHeight
属性。我也遇到了同样的问题,在我的XML
文件中只用一行代码就解决了这个问题:
android:minHeight="0dp"
谢谢-我希望避免这种情况,因为这意味着要创建很多图像。在我的应用程序中,我有大约15个图标,所以如果我想要8个水桶,那就是120个图像!为此,我对谷歌感到非常震惊。看起来真的很差。我想你不知道为什么谷歌基本上放弃了SVG而支持位图吗?假设我有一个font.ttf文件,它包含了我需要的所有图标,有没有一种快速的方法将其分解成各种绘图?无论是在编译时、预编译时,还是在运行时?@Jodes我第一次接触Android时也有类似的问题。不幸的是,这是一种必要的邪恶。这里有一篇关于在移动平台上使用SVG的信息非常丰富的帖子:。作者相当详细地讨论了这个话题。在我的研究中,我还发现了一些与SVG使用相关的性能问题
Dianne
提到了其中一些问题。@Jodes在我正在开发的一个应用程序中,我的可绘制文件夹目前总共包含1100个文件。随着项目接近完成,这个数字当然会下降。无论如何,android本机支持的最接近SVG的是xml可绘制文件家族:ShapeDrawables
、LayerDrawables
等。这些可绘制文件是用xml定义的,并放在res/drawable
文件夹中-如果在dp中定义其大小,则不需要将其放在多个密度桶中(密度像素)。因此,没有
drawable ldpi/-mdpi/-hdpi/-xhdpi/-etc.`.@Jodes提醒您,xml可绘制文件必须通过适当的大小更改进行定义,并放置在drawable large/-xlarge
文件夹中。但是有一种方法可以避免这种情况-定义值/dimens.xml
,值large/dimens.xml
和值xlarge/dim>ens.xml
并为每个文件添加一个新的维度,例如drawable\u width
。现在,您可以自由地为drawable\u width
-示例-16dp
分配值,如果是值/dimens.xml
,24dp
分配值,对于值大/dimens.xml
,以及32dp
分配值。xml
-android将根据设备选择合适的大小。
// 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
android:minHeight="0dp"