Как нарисовать линию в Android - PullRequest
       48

Как нарисовать линию в Android

144 голосов
/ 01 сентября 2010

Кто-нибудь может рассказать, как нарисовать линию в Android, возможно, с примером?

Ответы [ 15 ]

2 голосов
/ 27 июня 2013

Вы можете сделать рисованный круг, линию, прямоугольник и т. Д. С помощью фигур в XML следующим образом:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" 
    android:shape="line" >

    <solid android:color="#00000000" />

    <stroke
        android:width="2dp"
        android:color="#808080" />

</shape>
2 голосов
/ 01 сентября 2012
  final SurfaceView surf = (SurfaceView)findViewById(R.id.surface_home);
                surf.setOnTouchListener( new SurfaceView.OnTouchListener(){
                    private boolean moving = false;//stupid state
                    public boolean onTouch(View v, MotionEvent event) {
                        switch( event.getAction() ){
                        case MotionEvent.ACTION_DOWN:
                            final int x = (int)event.getX();
                            final int y = (int)event.getY();
                            final Rect bounds = mTiles.getBounds();
                            moving = bounds.intersects(x, y, x+1, y+1);
                            return true;
                        case MotionEvent.ACTION_MOVE:
                            if( moving ){
                                final int x_new = (int)event.getX();
                                final int y_new = (int)event.getY();
                                mDrawTiles.draw( new DrawLogic(){
                                    public void draw(Rect _surface) {
                                        mTiles.setBounds(
                                            x_new - mDrawWidth/2,
                                            y_new - mDrawHeight/2,
                                            x_new + mDrawWidth/2,
                                            y_new + mDrawHeight/2);
                                        }
                                    });
1 голос
/ 03 декабря 2014

Для улучшения ответов, предоставленных @ Janusz

Я добавил это к своим стилям:

<style name="Divider">
    <item name="android:layout_width">match_parent</item>
    <item name="android:layout_height">1dp</item>
    <item name="android:background">?android:attr/listDivider</item>
</style>

Тогда в моих макетах меньше кода и проще для чтения.

<View style="@style/Divider"/>

если вы хотите сделать горизонтальный межстрочный интервал, то сделайте выше.


А для вертикальной линии между двумя видами вам нужно заменить android: параметры (атрибуты) layout_width на android: layout_height

0 голосов
/ 28 августа 2018

Если вы работаете с ConstraintLayout, вам нужно определить как минимум 2 ограничения для строки, которая будет отображаться. Как это:

<View
        android:layout_width="0dp"
        android:layout_height="1dp"
        android:background="@android:color/black"
        app:layout_constraintEnd_toEndOf="@+id/someView1"
        app:layout_constraintStart_toStartOf="@+id/someView2"
        app:layout_constraintTop_toBottomOf="@+id/someView3" />

Хотя я определил 3 ограничения.

0 голосов
/ 02 апреля 2013

или если вы просто хотите строку

TextView line = new TextView(this);
            line.setBackgroundResource(android.R.color.holo_red_dark);
            line.setHeight((int) Utility.convertDpToPixel(1,this));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...