我知道有很多解决方案可以帮助更改单选按钮或复选框的大小,但我需要一种方法来在我的 .css 文件或其他一些内联解决方案中使用 em 使大小相对。
我试图让我的控件在 720p、1080p 和 4K 中显示相同的大小。除了 RadioButton 和 CheckBox 之外的所有其他控件都可以通过将 em 用于任何选择器控件的大小。我将在下面为每个控件包含一些相关的代码片段。
RadioButton.css(基本字体大小在另一个文件中定义)
.RadioButton {
-fx-font-size: 1em;
}
.RadioButton .radio {
-fx-background-insets: 0em;
-fx-background-radius: 0.833333em;
-fx-border-insets: 0em;
-fx-border-radius: 0.833333em;
-fx-padding: 0.5em;
}
.RadioButton:focused .radio {
-fx-background-insets: 0em;
-fx-background-radius: 0.833333em;
-fx-border-insets: 0em;
-fx-border-radius: 0.833333em;
-fx-padding: 0.5em;
}
.RadioButton:hover .radio {
-fx-background-insets: 0em;
-fx-background-radius: 0.833333em;
-fx-border-insets: 0em;
-fx-border-radius: 0.833333em;
-fx-padding: 0.5em;
}
.RadioButton:armed .radio {
-fx-background-insets: 0em;
-fx-background-radius: 0.833333em;
-fx-border-insets: 0em;
-fx-border-radius: 0.833333em;
-fx-padding: 0.5em;
}
.RadioButton .dot {
-fx-background-insets: 0em;
-fx-background-radius: 0.833333em;
-fx-padding: 0.4em;
}
.RadioButton:selected .dot {
-fx-background-insets: 0em;
}
截图
当所有这些都被使用时,RadioButton 会随着分辨率从 4K -> 1080p -> 720p 变得越来越大。这让我认为控件的某些部分仍在使用其自己的内部硬尺寸。我知道通常你只是改变填充值来实现不同的大小,但是你可以看到填充值已经在这里用 em 设置了。
复选框.css
.CheckBox {
-fx-font-size: 1em;
}
.CheckBox .box {
-fx-background-insets: 0em;
-fx-background-radius: 0.166667em;
-fx-border-insets: 0em;
-fx-border-radius: 0.166667em;
-fx-padding: 0.5em;
}
.CheckBox:focused .box {
-fx-background-insets: 0em;
-fx-background-radius: 0.166667em;
-fx-border-insets: 0em;
-fx-border-radius: 0.166667em;
}
.CheckBox:hover .box {
-fx-background-insets: 0em;
-fx-background-radius: 0.166667em;
-fx-border-insets: 0em;
-fx-border-radius: 0.166667em;
}
.CheckBox:armed .box {
-fx-background-insets: 0em;
-fx-background-radius: 0.166667em;
-fx-border-insets: 0em;
-fx-border-radius: 0.166667em;
}
.CheckBox .mark {
-fx-background-insets: 0.083333em 0em 0.083333em 0em, 0em;
-fx-padding: 0.5em;
-fx-shape: "M0,4H2L3,6L6,0H8L4,8H2Z";
}
截图
这与 RadioButton 文件非常相似,其中所有值都使用 em 而不是硬值。作为标记一部分的 -fx-shape 是否会因为它是硬值而导致所有 em 值失败?
期待
我的最终目标是让单选按钮和复选框在不同的分辨率下完全(非常接近)保持相同的大小。