Android:用线连接按钮
我正在编写一个Android应用程序,它非常类似于一个二叉树/图形,有几个按钮是手工创建的,但我不知道如何创建连接按钮的线条 这是一张显示我需要做什么的图片: 这是我的XML文件:Android:用线连接按钮,android,android-layout,android-widget,Android,Android Layout,Android Widget,我正在编写一个Android应用程序,它非常类似于一个二叉树/图形,有几个按钮是手工创建的,但我不知道如何创建连接按钮的线条 这是一张显示我需要做什么的图片: 这是我的XML文件: <ScrollView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/vscroll" android:layout_width="fill_parent" android
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/vscroll"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#000000" >
<HorizontalScrollView
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/hscroll"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="#888888" >
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/relativescroll"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:background="#FFFFFF" >
<!-- Buttons and lines connecting them -->
</RelativeLayout>
</HorizontalScrollView>
</ScrollView>
请问,我该怎么做呢?您可能想说一下NodeLink在做什么-自定义视图类
在任何情况下,我建议获得按钮上“锚”的坐标(图中的顶部中心点),然后创建链接相关按钮锚的路径。将这些路径绘制/绘制到a中,将其另存为a,然后您可以将该可绘制设置为(RelativeLayout/mainLayout)。对不起,NodeLink什么也不做,我忘记从代码中删除它。我来测试一下你的建议,你有什么例子吗?那会很有帮助的!谢谢我决定做一些不同的事情,我在画布上画我的图形,自己处理滚动和点击。到目前为止,一切都进行得很顺利。将所有内容绘制到画布可以为您提供更多的绘图控制,但您可能希望了解一下这是否是您的项目所关心的问题。您可以通过小部件自动继承Android的大部分可访问性功能,因此自定义绘制视图必须自己滚动。事实上,这是一个问题,但目前不是。这个项目只是一个更大的原型,我们也在研究其他可视化选项,我相信这将更容易,更容易被用户访问:)哦!我是巴西人,我的英语不是很好。。。所以,如果你不明白我说的话,请随意提问:)我发现你是用葡萄牙语工作的:“Botão 1”如果你在从事可视化工作,我认为有一些项目正在进行中,以实现Java图表/数据viz库的android端口,因此他们的努力可能会有所帮助。
public class MainActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
RelativeLayout mainLayout = (RelativeLayout) findViewById(R.id.relativescroll);
RelativeLayout.LayoutParams newParams;
// Botão 1
Button btn1 = new Button(this);
btn1.setId(1);
btn1.setText("Botão 1");
newParams = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT,
RelativeLayout.LayoutParams.WRAP_CONTENT
);
newParams.setMargins(0, 0, 20, 50);
newParams.addRule(RelativeLayout.CENTER_HORIZONTAL);
btn1.setLayoutParams(newParams);
mainLayout.addView(btn1);
// Botão 2
Button btn2 = new Button(this);
btn2.setId(2);
btn2.setText("Botão 2");
newParams = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT,
RelativeLayout.LayoutParams.WRAP_CONTENT
);
newParams.setMargins(0, 0, 20, 50);
newParams.addRule(RelativeLayout.BELOW, 1);
newParams.addRule(RelativeLayout.ALIGN_PARENT_LEFT);
btn2.setLayoutParams(newParams);
mainLayout.addView(btn2);
// Botão 3
Button btn3 = new Button(this);
btn3.setId(3);
btn3.setText("Botão 3");
newParams = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT,
RelativeLayout.LayoutParams.WRAP_CONTENT
);
newParams.setMargins(0, 0, 20, 50);
newParams.addRule(RelativeLayout.BELOW, 1);
newParams.addRule(RelativeLayout.RIGHT_OF, 2);
btn3.setLayoutParams(newParams);
mainLayout.addView(btn3);
// Botão 4
Button btn4 = new Button(this);
btn4.setId(4);
btn4.setText("Botão 4");
newParams = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT,
RelativeLayout.LayoutParams.WRAP_CONTENT
);
newParams.setMargins(0, 0, 20, 50);
newParams.addRule(RelativeLayout.BELOW, 1);
newParams.addRule(RelativeLayout.RIGHT_OF, 3);
btn4.setLayoutParams(newParams);
mainLayout.addView(btn4);
// Botão 4
Button btn5 = new Button(this);
btn5.setId(5);
btn5.setText("Botão 5");
newParams = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT,
RelativeLayout.LayoutParams.WRAP_CONTENT
);
newParams.setMargins(0, 0, 20, 50);
newParams.addRule(RelativeLayout.BELOW, 1);
newParams.addRule(RelativeLayout.RIGHT_OF, 4);
btn5.setLayoutParams(newParams);
mainLayout.addView(btn5);
// DRAW LINK
NodeLink link = new NodeLink(this);
newParams = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT,
RelativeLayout.LayoutParams.WRAP_CONTENT
);
newParams.addRule(RelativeLayout.BELOW, 1);
newParams.addRule(RelativeLayout.ABOVE, 2);
newParams.addRule(RelativeLayout.RIGHT_OF, 1);
newParams.addRule(RelativeLayout.LEFT_OF, 2);
mainLayout.addView(link);
}
}