当前位置: 首页 > 知识库问答 >
问题:

Android切换按钮自定义大小/填充/间距

谭仰岳
2023-03-14

我正在尝试为我的Android切换按钮创建一个自定义样式。改变颜色和文本是没有问题的,但我有麻烦改变大小/填充/间距或其他任何东西,让他们看起来不必要的大在默认情况下。我已经将height设置为wrap_content,将padding和margin设置为0,但是按钮的大小仍然和默认的切换按钮一样大。

你们有没有人知道我需要更改哪些参数来删除按钮文本和边框之间不必要的间距?

这里有一个链接到我想要实现的图像。从左到右:默认的ToggleButton,我当前的ToggleButton和我想要的ToggleButton类型。

这是我的代码(当我动态添加这些按钮时,没有xml)

ToggleButton button = new ToggleButton(getContext());
button.setLayoutParams(new LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT));
button.setId(IDCreator.getID());
button.setText(tag);
button.setTextOff(tag);
button.setTextOn(tag);
button.setGravity(Gravity.LEFT);
button.setPadding(0, 0, 0, 0);
button.setBackground(getContext().getResources().getDrawable(R.drawable.toggle_selector));

谢谢你的帮助。亲切的问候。

编辑:图像和代码

共有1个答案

於和志
2023-03-14

如果您只是试图更改在ToggleButton中呈现文本的方式,那么您需要调整按钮的XML中的android:paddingandroid:gravit参数。

要更改填充,首先需要将文本从默认的居中移开(因为当它居中时,填充没有能力生效)。您可以通过android:gravity参数来实现这一点,该参数类似于CSS中的text-align。

例如;

<ToggleButton xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="left">
</ToggleButton>

这将使文本向ToggleButton的左侧对齐。然而,这也将在默认情况下将其对齐到顶部,因为重力同时影响x轴和y轴。

如果要垂直对齐中心,水平对齐左侧,则应执行以下操作:

<ToggleButton xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="left|center">
</ToggleButton>

这将使您的中心垂直,但完全设置在水平刻度左侧。这会使文本出现在按钮边缘的顶部,看起来很不吸引人。您需要将对齐与文本的填充结合使用,以便将文本精确地放置在您想要的位置。

例如:

<ToggleButton xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding_left="10dp"
android:gravity="left|center">
</ToggleButton>

这只会向左侧添加填充,这意味着您可以将其设置为远离边框的位置。

您可以使用每边的填充和重力来根据您的需要缩放文本,但这将是控制togglebutton内部文本对齐的最佳方法。

 类似资料:
  • 经过4个月的不活动,我意识到有一些变化。 现在,当您制作一个新按钮时,它是紫色的,并且定义了一些填充。通过编辑主题,我设法杀死了紫色,但我仍然有问题与填充。当我做一个新的按钮,默认情况下它有左和右填充16dp,顶部和底部4。我不想被迫改变每一个新按钮为0填充… 我心里有两个选择。在自定义按钮XML中设置填充: …但由于某种原因,这行不通。 有人能找出问题所在吗? 或者告诉我如何更改新按钮的默认填充

  • 问题内容: 我正在尝试使用Javafx制作屏幕键盘。我正在使用Scene Builder制作FXML文件。 但是,当调整窗口大小时,内容不会。我希望按钮增加/减小大小,直到适合窗口为止。启用Hgrow和Vgrow无效。 而且我找不到如何在按钮上设置填充。我想使类似Ctrl的按钮更小而不丢失文本。 问题答案: 根据字体大小调整大小 对于您的特定情况,而不是尝试使用填充或其他布局约束来调整按钮的大小,

  • > 标高,同时具有自定义可绘制。 在用户触摸的地方启动涟漪效果。

  • 我想做一个现代的图形用户界面,左边有标签,如图所示: 有什么想法,我如何让面板在不处理写入/设置的数据的情况下进行切换,例如进入文本字段、文本区域、复选框、滚动条等? 我本来想删除旧的一个面板,并添加另一个面板,但当我点击面板之前,我访问的控制数据将被重置,我认为它会闪烁。

  • 但是,这也不起作用。

  • 这是个奇怪的切换按钮。正如你在图片中看到的,我没有设置任何边距/填充,但它只是在切换按钮周围有一个小的2dp边距/填充。我想把它和上面的按钮组对齐,我应该怎么做? 在代码中,我没有添加任何边距或填充。不明白为什么会有这个。