2014-03-25 45 views
0

我有我想要展示的所有元素(文本以及圖像視圖),現在我需要做的就是顯示一條連接我的某些視圖的線(我正在嘗試生成一個連接圖的外觀)。是否有其他的方式來做到這一點,而不使用畫布?另一個疑問是,如果我使用畫布進行自定義視圖,可以在同一活動中使用其他圖像/文本視圖以及畫布。用一條線加入兩個視圖

我是新到Android,這就是爲什麼困惑,請給我一些方向移動。

回答

0

您可以使用創建一個空白視圖。將寬度和其他屬性添加到它以使其顯示爲一條線。

<View android:layout_width="1dp" 
    android:layout_height="wrap_content"/> 
0

使用此:

<LinearLayout 
    android:id="@+id/layout1" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" > 

</LinearLayout> 
<View 
    android:layout_width="1dp" 
    android:layout_height="wrap_content" /> 
<LinearLayout 
    android:id="@+id/layout2" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" > 

</LinearLayout> 

查看標記分隔兩個佈局之類的小線

1

我做同樣的與CustomView。看一看:

Connectors

CustomView類源代碼:

public class CustomView extends View 
{ 
    Paint   paint  = new Paint(); 
    float   startingX, startingY, endingX, endingY; 

    ArrayList<Lines> line_list = new ArrayList<Lines>();  ; 

    boolean flag = false; 
    boolean flag1 = false; 
    public class Lines 
    { 
     float startingX, startingY, endingX, endingY; 
    } 
    Context context; 
    public CustomView(Context context, AttributeSet attrs) 
    { 
     super(context, attrs); 
     this.context=context; 
    } 

    public CustomView(Context context, AttributeSet attrs, int defStyle) 
    { 
     super(context, attrs, defStyle); 
    } 

    public void setNumberOfLine(int x) 
    { 
     line_list = new ArrayList<Lines>(); 
     int y = getHeight(); 
     int z = getWidth(); 
     System.out.println("length => "+x); 
     System.out.println("height => "+y); 
     System.out.println("width => "+z); 

     for (int i = 0; i < x; i++) 
     { 
      Lines l = new Lines(); 
      l.startingX = z/2; 
      l.startingY = 0; 
      l.endingX = i*(z/x)+(z/(x*2)); 
      l.endingY = y; 
      System.out.println("l.endingX => " + l.endingX); 
      System.out.println("l.endingY => " + l.endingY); 
      line_list.add(l); 
     } 
     flag = true; 
     flag1 = false; 
     invalidate(); 
    } 

    @SuppressWarnings("deprecation") 
    public void setNumberOfLine1(int x , int position , int total , float getX) 
    { 
     line_list = new ArrayList<Lines>(); 
     int y = getHeight(); 
//  Display display = ((Activity) context).getWindowManager().getDefaultDisplay(); 
//  int z = display.getWidth(); 
     int z; 

     float start=0; 
//  
     if(x<5) 
     { 
      Display display = ((Activity) context).getWindowManager().getDefaultDisplay(); 
      z = display.getWidth(); 
      start = position*(z/total)+(z/(total*2)); 
     } 
     else 
     { 
      z = getWidth(); 
      start = getX; 
     } 

     System.out.println("length => "+x); 
     System.out.println("height => "+y); 
     System.out.println("width => "+z); 

     for (int i = 0; i < x; i++) 
     { 
      Lines l = new Lines(); 
      if(x==1) 
      { 
       l.startingX = start; 
       l.startingY = 0; 
       l.endingX = 2*(z/total)+(z/(total*2)); 
       l.endingY = y; 
      } 
      else if(x==2) 
      { 
       if(i==0) 
       { 
        l.startingX = start; 
        l.startingY = 0; 
        l.endingX = 1*(z/total)+(z/(total*2)); 
        l.endingY = y; 
       } 
       else if(i==1) 
       { 
        l.startingX = start; 
        l.startingY = 0; 
        l.endingX = 3*(z/total)+(z/(total*2)); 
        l.endingY = y; 
       } 

      } 
      else if(x==3) 
      { 
       if(i==0) 
       { 
        l.startingX = start; 
        l.startingY = 0; 
        l.endingX = 2*(z/total)+(z/(total*2)); 
        l.endingY = y; 
       } 
       else if(i==2) 
       { 
        l.startingX = start; 
        l.startingY = 0; 
        l.endingX = 3*(z/total)+(z/(total*2)); 
        l.endingY = y; 
       } 
       else if(i==3) 
       { 
        l.startingX = start; 
        l.startingY = 0; 
        l.endingX = 4*(z/total)+(z/(total*2)); 
        l.endingY = y; 
       } 

      } 
      else if(x==4) 
      { 
       if(i==0) 
       { 
        l.startingX = start; 
        l.startingY = 0; 
        l.endingX = 1*(z/total)+(z/(total*2)); 
        l.endingY = y; 
       } 
       else if(i==2) 
       { 
        l.startingX = start; 
        l.startingY = 0; 
        l.endingX = 2*(z/total)+(z/(total*2)); 
        l.endingY = y; 
       } 
       else if(i==3) 
       { 
        l.startingX = start; 
        l.startingY = 0; 
        l.endingX = 3*(z/total)+(z/(total*2)); 
        l.endingY = y; 
       } 
       else if(i==3) 
       { 
        l.startingX = start; 
        l.startingY = 0; 
        l.endingX = 5*(z/total)+(z/(total*2)); 
        l.endingY = y; 
       } 

      } 
      else 
      { 
//    l.startingX = start; 
//    l.startingY = 0; 
//    l.endingX = i*(z/total)+(z/(total*2)); 
//    l.endingY = y; 
       l.startingX = start; 
       l.startingY = 0; 
       l.endingX = i*(z/x)+(z/(x*2)); 
       l.endingY = y; 
      } 
      line_list.add(l); 
      System.out.println("l.endingX 1=> " + l.endingX); 
      System.out.println("l.endingY 1=> " + l.endingY); 
     } 
     flag1 = true; 
     flag = false; 
     invalidate(); 
    } 

    public CustomView(Context context) 
    { 
     super(context); 
     // TODO Auto-generated constructor stub 
     paint.setColor(getResources().getColor(R.color.purple_dark)); 
     paint.setStrokeWidth(Utility.dpToPx(5, context)); 
    } 
} 
+0

那是什麼'CustomView'?你應該提供更多的細節來支持你的答案。 –

+0

這正是我正在尋找的,你可以指導我的教程或文章,幫助 – sainiankit

+0

@SainiAnkit我用'CustomView'源代碼更新了我的答案。 –