我在将JavaFX的HBox定位成与Circle类似的方式时遇到了问题。
如果使用圆形形状,则可以手动定位它,使其绑定到不同的节点。这是我到现在为止所做的,通过使用一个窗格作为参考点:
Pane node; //can be dragged around/resized
//...
Circle terminal = new Circle(10);
terminal.setStroke(Color.GREEN);
terminal.setFill(Color.GREEN);
terminal.centerXProperty().bind( node.layoutXProperty() );
terminal.centerYProperty().bind( node.layoutYProperty() );
Pane node; //can be dragged around/resized
//...
HBox terminalContainer = new HBox();
terminalContainer.layoutXProperty().bind( node.layoutXProperty() );
terminalContainer.layoutYProperty().bind( node.layoutYProperty() );
//... adding circles into HBox as scenegraph children
唯一的区别是将HBox替换为圆圈,并使用layoutXProperty(),因为没有centerXProperty()。但这当然失败了,端口看起来粘在包含框架的顶部,行为奇怪。有解决办法吗?我尝试将“家长”窗格更改为“锚定窗格”,这允许手动将HBox锚定在正确的位置,但导致了调整大小/拖动代码的问题。
最小示例:
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.layout.AnchorPane;
import javafx.scene.layout.HBox;
import javafx.scene.layout.Pane;
import javafx.scene.paint.Color;
import javafx.scene.shape.Circle;
import javafx.scene.shape.Rectangle;
import javafx.stage.Stage;
public class Main2 extends Application {
private AnchorPane component;
@Override
public void start(Stage primaryStage) {
component = new AnchorPane();
Scene scene = new Scene(component, 1024, 768);
scene.getStylesheets().add(getClass().getResource("application.css").toExternalForm());
primaryStage.setScene(scene);
primaryStage.show();
//This works, but is hard to maintain
Cell c1 = new Cell();
Cell c2 = new Cell();
Port p1 = new Port(c1);
Port p2 = new Port(c2);
component.getChildren().addAll(c1, c2, p1, p2);
c1.relocate(150, 150);
c2.relocate(550, 550);
//This does not work, even if unbinding circles, but is simpler
HBox pc1 = new HBox();
HBox pc2 = new HBox();
pc1.layoutXProperty().bind( c1.layoutXProperty() );
pc1.layoutYProperty().bind( c1.layoutYProperty() );
pc2.layoutXProperty().bind( c2.layoutXProperty() );
pc2.layoutYProperty().bind( c2.layoutYProperty() );
Port p3 = new Port(c1);
Port p4 = new Port(c2);
pc1.getChildren().add(p3);
pc2.getChildren().add(p4);
component.getChildren().addAll(pc1, pc2);
}
class Cell extends Pane {
public Cell() {
Rectangle view = new Rectangle(50,50);
view.setStroke(Color.DODGERBLUE);
view.setFill(Color.DODGERBLUE);
getChildren().add(view);
}
}
class Port extends Pane {
public Port(Cell owner) {
Circle view = new Circle(10);
view.setStroke(Color.GREEN);
view.setFill(Color.GREEN);
view.centerXProperty().bind( owner.layoutXProperty() );
view.centerYProperty().bind( owner.layoutYProperty() );
getChildren().add(view);
}
}
public static void main(String[] args) {
launch(args);
}
}
在绑定layoutXProperty两次而不是layoutYProperty facepalm的代码中出现了一个错误
问题内容: 我想将我的线性布局制作成环形。 我遵循了此链接,但没有环形布局,而是环形布局。 https://developer.android.com/guide/topics/resources/drawable- resource.html#Shape 我的xml 和ring.xml在drawable中 我只是在布局中出现一个圆圈而不是ring。抱歉,由于声誉欠佳,我无法上传输出图片。 问题答
我如何做一个圆角布局?我想对我的应用圆角。
我试图在另一个活动的顶部显示一个半透明背景的活动,并在屏幕中央显示一个drawable。drawable有圆角,我设置了一个圆角矩形作为布局的背景。这个形状的背景是可绘制的。问题是我仍然在圆角的drawable后面得到一个黑色的方形边框。有没有办法去掉那个黑边? 我想我不能发布图片,因为我没有声誉? 这是布局的xml: 以下是形状的xml:
我想包括一个布局与数据绑定。 我想使用将id从java传递到布局,但我似乎找不到正确的语法。 这是我的片段类,带有和: 我想充气。分割项目,并使其包含
我正试图通过数据绑定来设置android中最小值为0、最大值为10的整数的限制。为此,我有一个可绑定的适配器,它通过两个侦听器设置一个整数的值,一个增加值,另一个减少值。最后,我想设置这个整数的极限,最小值为0,最大值为10。
我有一个线性布局,有2个不同背景颜色的文本视图。我想使整个视图(线性布局)圆角。我试图将它封闭在MaterialCardview中(因为当我在里面设置整个片段布局时,我能够达到这种效果),但由于某种原因,它不起作用。我需要做什么来实现视图的圆角? 注意:我知道有些人可能建议使用背景为圆形的xml drawable。这将不起作用,因为儿童背景色将接管透明度,并将保持锐利的边缘