6

我有一个简单的线性布局。我通过下面的代码动态地添加按钮,中间有一些空间。我需要在这两个按钮之间画一条垂直线(特别是垂直箭头线)。

你能告诉我如何从button1的底部到button2的顶部画一条垂直线吗?

我使用 DrawLine() 来绘制一条线,但它在 button2 下方绘制了一些偏移量。

这是我的代码:

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);
    }

}
4

2 回答 2

5

用视图画线

如果您只需要一条水平线或垂直线,那么最简单的方法可能是在您的 xml 布局文件中使用一个视图。你会做这样的事情:

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

设置第一个按钮gravity to left和其他按钮,to right并在它们之间添加一个视图并将其设置为gravity to center.

第二种方式

添加 button (weight 45) view(10) button2(weight45) 就完成了。 您还可以创建一个 xml 并将其扩展为 LinearLayout。

垂直线宽为 1dp,水平线高为 1dp

于 2015-01-22T06:52:28.843 回答
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" >
于 2015-01-22T06:40:35.687 回答