我正在开发一个Android项目,我想动态地向视图添加形状,我无法弄清楚如何使用具有文本的形状来做到这一点。我见过很多人建议使用带有TextView
xml形状的自定义Drawable
作为背景。我的问题是我不知道如何动态地将它们添加到具有不同位置的视图中。基本上我希望它显示一个树,有点像二叉树,其中每个节点只能有两个子节点,但树的大小和每个节点中的文本将基于用户输入。树也将从下往上构建。现在我只是根据输入ArrayList的大小显示正确数量的形状。但是我只使用ShapeDrawable
来自研究,我认为没有办法添加文本。这是我目前的代码:
在我的DisplayTree活动中:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Intent intent = getIntent();
sequenceList = intent.getStringArrayListExtra("SequenceList");
drawTree = new DrawTree(this);
drawTree.setBackgroundColor(Color.WHITE);
setContentView(drawTree);
}
使用自定义视图:
public class DrawTree extends View{
private ShapeDrawable mDrawable;
public DrawTree(Context context) {
super(context);
mDrawable = new ShapeDrawable(new OvalShape());
}
public void onDraw(Canvas canvas){
int x = 30;
int y = 10;
int w = 100;
int h = 100;
numberOfSequences = sequenceList.size();
for(int i = 1; i <= numberOfSequences; i++){
mDrawable.setBounds(x, y, x + w, y + h);
mDrawable.draw(canvas);
y = y + 200;
}
}
}
这是一个简化/未完成的版本。最终我会将这些线连接到这些形状右侧的其他节点。这就是为什么我想尽可能保持相同的技术,或者找到另一个技术,以便在特定的x和y位置添加更多形状。我已经坚持了一段时间,非常感谢任何帮助!