在相对布局之间绘制动态按钮之间的线

时间:2014-06-13 04:22:52

标签: android android-layout android-canvas

<LinearLayout 
    android:orientation="horizontal"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:weightSum="6"
    android:gravity="center"
    android:paddingLeft="5dp">

    <RelativeLayout
        android:id="@+id/child_one"  
        android:layout_height="match_parent"
        android:layout_width="0dp"
        android:gravity="center"
        android:layout_weight="0.7">

        <Button android:id="@+id/buttonhome1"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:layout_centerInParent="true"
             android:clickable="true"
             android:focusable="false"
             android:focusableInTouchMode="false"
             android:background="@drawable/"/>

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:gravity="center_horizontal"
            android:layout_below="@+id/buttonhome1"
            android:text="@string/Main"/> 

     </RelativeLayout>

    <RelativeLayout
        android:id="@+id/child_two"
        android:layout_height="match_parent"
        android:layout_width="0dp"
        android:gravity="center"
        android:visibility="invisible"
        android:layout_weight="1.8">

        <Button android:id="@+id/childBtn1"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:focusable="true" 
             android:layout_marginTop="10dp"
             android:layout_marginLeft="0dp"
             android:background="@drawable/"/>

        <TextView
            android:id="@+id/childtxt1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="20dp"
            android:gravity="center_horizontal"
            android:layout_centerVertical="@+id/childBtn1"
            android:layout_toRightOf="@+id/childBtn1"
            android:text="@string/text1"/>  

        <Button android:id="@+id/childBtn2"
            android:layout_width="wrap_content"
            android:layout_height=  "wrap_content"
            android:focusable="true" 
            android:layout_marginTop="10dp"
            android:layout_marginLeft="80dp"
            android:layout_below="@+id/childBtn1"
            android:background="@drawable/"/>

        <TextView
            android:id="@+id/childtxt2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="20dp"
            android:gravity="center_horizontal" 
            android:layout_below="@+id/childBtn1"
            android:layout_toRightOf="@+id/childBtn2"
            android:text="@string/text2"/>  

    </RelativeLayout>
    <RelativeLayout
        android:id="@+id/child_three"
        android:layout_height="match_parent"
        android:visibility="visible"
        android:layout_width="0dp"
        android:layout_weight="1.8" />
     <RelativeLayout
        android:id="@+id/child_four"
        android:layout_height="match_parent"
        android:layout_width="0dp"
        android:visibility="visible"
        android:layout_weight="1.7"/>        
</LinearLayout>

动态按钮之间的画线

我的线性布局中有三个相对布局。

Layout 1有主按钮,当在主按钮上执行点击操作时,通过代码生成相对layout 2的动态按钮。

我的问题是,我可以使用图形类通过动态方式在布局中绘制线条来连接主按钮和layout 2中的子按钮吗?

1 个答案:

答案 0 :(得分:2)

将id设置为动态按钮,并使用带按钮ID的addRule()添加按钮下方的行。

    RelativeLayout rLayout = (RelativeLayout) findViewById(R.id.your_relative_layout);
    RelativeLayout.LayoutParams lparams = new RelativeLayout.LayoutParams(
        RelativeLayout.LayoutParams.WRAP_CONTENT,
        RelativeLayout.LayoutParams.WRAP_CONTENT);
    // your button here
    Button tv1 = new Button(this);
    tv1.setText("Hello");
    tv1.setLayoutParams(lparams);
    tv1.setId(1);//id of the button
    rLayout.addView(tv1);
   // line here
   RelativeLayout.LayoutParams lineparams = new RelativeLayout.LayoutParams(
        RelativeLayout.LayoutParams.MATCH_PARENT, 1);
   View line = new View(this);
   lineparams.addRule(RelativeLayout.BELOW, 1);//specify the id of the button to add the line below the button
   line.setLayoutParams(lineparams);
   line.setBackgroundColor(getResources().getColor(android.R.color.black));
   line.setId(2);
   rLayout.addView(line);