2013-09-23 4 views
5

У меня простая линейная компоновка. Я добавляю кнопку динамически через код один ниже другого с некоторым промежутком между ними. Мне нужно нарисовать вертикальную линию между этими двумя кнопками (вертикальная стрелка в строке).Как нарисовать вертикальную линию между двумя кнопками в android

Не могли бы вы дать мне знать, как нарисовать вертикальную линию от buttom кнопки1 до верхней части кнопки2.

Я использовал DrawLine(), чтобы нарисовать линию, но получив рисунок ниже кнопки2 с некоторым смещением.

Вот мой код:

import android.app.ActionBar.LayoutParams; 
import android.app.Activity; 
import android.graphics.Color; 
import android.os.Bundle; 
import android.view.Gravity; 
import android.view.View; 
import android.widget.Button; 
import android.widget.LinearLayout; 

public class SampleMethodActivity extends Activity { 
    Button b,b1; 
    public int width,height,bottom; 
    LinearLayout ll; 

    public void onCreate(Bundle savedInstanceState) { 

     super.onCreate(savedInstanceState); 
     setContentView(R.layout.sample_method); 

     ll = (LinearLayout) findViewById(R.id.my_linear_layout); 


     LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); 
      params.setMargins(0, 12, 0, 40); 

     b = new Button(this); 
     b.setText("This is a sample text"); 

     b.setLayoutParams(params); 
     b.setGravity(Gravity.CENTER); 
     ll.addView(b); 


     b1 = new Button(this); 
     b1.setText("This is a sample text to chck the width and height of a button1 and need to check how long it gets stretched and to check the width"); 
     b1.setLayoutParams(params); 
     b1.setGravity(Gravity.CENTER); 
     ll.addView(b1); 

    } 

    @Override 
    public void onWindowFocusChanged(boolean hasFocus) { 
     super.onWindowFocusChanged(hasFocus); 

     width = b.getWidth(); 
     height = b.getHeight(); 
     bottom = b.getBottom(); 

     DrawView dv = new DrawView(this,width/2,bottom); 
     ll.addView(dv); 

    } 
} 

Ниже DrawView класс:

import android.content.Context; 
import android.graphics.Canvas; 
import android.graphics.Color; 
import android.graphics.Paint; 
import android.view.View; 

public class DrawView extends View { 
    Paint paint = new Paint(); 
    int x,y; 

    public DrawView(Context context,int x,int y) { 
     super(context); 
     this.x=x; 
     this.y=y; 
    } 

    @Override 
    public void onDraw(Canvas canvas) { 
     super.onDraw(canvas); 
     paint.setColor(Color.WHITE); 
     paint.setStrokeWidth(3); 
     System.out.println("X: "+x); 
     canvas.drawLine(x, y, x, y+400, paint); 
    } 

} 
+0

проверить эту ссылку: http://stackoverflow.com/questions/3809742/how-can-i-draw-a-vertical- линия-в-ан-активность, когда-а-кнопочным будет нажат – Ranjit

ответ

0

Добавить это colors.xml

<color name="streat_line">#D0D5D8</color> 

применить это, где вы хотите, чтобы создать линию

<TextView 
android:id="@+id/TextView" 
android:layout_width="1dp" 
android:layout_height="wrap_content" 
android:background="@color/streat_line" > 
3

Рисование линии с видом

Если вам нужно только прямую горизонтальную или вертикальную линию, то самый простой способ может быть просто использовать View в файле макета XML. Вы бы сделать что-то вроде этого:

<View 
    android:layout_width="1dp" 
    android:layout_height="match_parent" 
    android:background="@android:color/black" /> 

Установить первую кнопку gravity to left и другие to right и между ними добавить вид между ними и установить его gravity to center.

Второй путь

Добавить кнопку (вес 45) вид (10) button2 (weight45), и вы сделали. , и вы также можете создать xml и наполнить его LinearLayout.

Для вертикальной ширины линии к 1DP и по высоте горизонтальной линии, чтобы 1DP

Смежные вопросы