XML 그리기 가능을 사용한 수직선
도면으로 사용할 수직선(1dp 두께)을 정의하는 방법을 찾고 있습니다.
수평적인 것을 만드는 것은 매우 간단합니다.
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="line">
<stroke android:width="1dp" android:color="#0000FF"/>
<size android:height="50dp" />
</shape>
문제는, 어떻게 이 선을 수직으로 만들 것인가 하는 것입니다.
모양을 두께로 방법이 개의 예, 직 1px 두로 된 경우 한 XML을 만듭니다.<item>
요소들.
누가 이런 일을 할 기회가 있었나요?
갱신하다
사건은 아직 미해결입니다.그러나 Android 설명서 십자군에 참여하는 모든 사용자에게 유용할 수 있습니다: Missing Android XML Manual
갱신하다
저는 제가 정확하다고 표시한 것 외에 다른 방법을 찾지 못했습니다.약간 "무거운" 느낌이 들지만 요령을 발휘하므로, 혹시 답을 알고 있다면 공유하는 것을 잊지 마십시오;)
모양 대신에, 당신은 시도할 수 있습니다.View
:
<View
android:layout_width="1dp"
android:layout_height="match_parent"
android:background="#FF0000FF" />
저는 이것을 가로줄에만 사용해봤지만 세로줄에도 사용할 수 있을 것 같습니다.
사용:
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="#FF0000FF" />
가로줄용으로
회전 태그 내부에 모양을 중첩할 수 있습니다.
<rotate xmlns:android="http://schemas.android.com/apk/res/android"
android:fromDegrees="90"
android:toDegrees="90">
<shape
android:shape="line">
<stroke
android:width="1dp"
android:color="#ff00ff"
android:dashWidth="1dp"
android:dashGap="2dp" />
</shape>
</rotate>
그러나 유일한 문제는 레이아웃 xml에 정의된 레이아웃 매개변수가 원래 모양을 그리는 데 사용되는 치수라는 것입니다.즉, 줄의 높이를 30dp로 하려면 레이아웃 xml에 layout_width를 30dp로 정의해야 합니다.그러나 이 경우 최종 폭도 30dp가 될 것이며, 이는 대부분의 상황에서 바람직하지 않을 수 있습니다.즉, 너비와 높이가 모두 동일한 값, 즉 선에 대해 원하는 길이의 값이어야 합니다.저는 이것을 고치는 방법을 찾을 수가 없었어요.
이것이 "안드로이드 방식" 해결책인 것처럼 보이지만, 제가 언급한 치수 문제에 대해 약간의 수정이나 해결책이 없는 한 대부분의 사람들에게 이것은 작동하지 않을 것입니다.우리에게 정말 필요한 것은 <shape/> 또는 <stroke/>의 방향 속성입니다.
회전 태그의 속성에서 다음과 같은 다른 그리기 대상을 참조할 수도 있습니다.
<rotate xmlns:android="http://schemas.android.com/apk/res/android"
android:fromDegrees="90"
android:toDegrees="90"
android:drawable="@drawable/horizontal_line" />
하지만 저는 이것을 테스트하지 않았고 같은 문제가 있을 것으로 예상합니다.
편집 --
아, 사실 해결책을 찾았어요.레이아웃 xml에서 마이너스 여백을 사용하여 불필요한 추가 공간을 제거할 수 있습니다.예:
<ImageView
android:layout_width="35dp"
android:layout_height="35dp"
android:layout_marginLeft="-15dp"
android:layout_marginRight="-15dp"
android:src="@drawable/dashed_vertical_line" />
회전 특성을 사용할 수 있습니다.
<item>
<rotate
android:fromDegrees="90"
android:toDegrees="90"
android:pivotX="50%"
android:pivotY="50%" >
<shape
android:shape="line"
android:top="1dip" >
<stroke
android:width="1dip"
/>
</shape>
</rotate>
</item>
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle" >
<stroke android:width="1dp" android:color="@color/white" />
<size android:width="2dp" />
</shape>
작업은 저에게 적합합니다. fill_parent 또는 dp 높이로 고정된 크기로 배경을 지정합니다.
이것이 가장 간단한 해결책이라고 생각합니다.
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:gravity="center">
<shape android:shape="rectangle">
<size android:width="1dp" />
<solid android:color="#0000FF" />
</shape>
</item>
</layer-list>
저는 다른 해결책을 생각해냈습니다.먼저 그리기 가능한 영역을 원하는 색상으로 채우고 왼쪽 또는 오른쪽 패딩을 사용하면서 배경색으로 전체 영역을 다시 채우는 것이 아이디어입니다.분명히 이것은 그리기 가능한 그림의 맨 왼쪽 또는 오른쪽에 있는 수직선에만 적용됩니다.
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:drawable="@color/divider_color" />
<item android:left="6dp" android:drawable="@color/background_color" />
</layer-list>
보기를 동적으로/프로그램적으로 추가해야 했기 때문에 보기를 추가하는 것이 번거로웠을 것입니다.제 뷰 높이가 WRAP_CONTENT여서 직사각형 솔루션을 사용할 수 없었습니다.저는 여기에서 TextView 확장, Draw() 위에 덮어쓰기, 라인에 그림 그리기에 대한 블로그 포스트를 발견했습니다. 그래서 저는 그것을 구현했고 그것은 잘 작동합니다.아래 내 코드 참조:
public class NoteTextView extends TextView {
public NoteTextView(Context context) {
super(context);
}
private Paint paint = new Paint();
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
paint.setColor(Color.parseColor("#F00000FF"));
paint.setStrokeWidth(0);
paint.setStyle(Paint.Style.FILL);
canvas.drawLine(0, 0, 0, getHeight(), paint);
}
}
왼쪽에 수직선이 필요했는데 도면 매개변수는drawLine(startX, startY, stopX, stopY, paint)
따라서 뷰를 가로지르는 모든 방향으로 직선을 그릴 수 있습니다.그리고 내 활동에서 나는.NoteTextView note = new NoteTextView(this);
이게 도움이 되길 바랍니다.
아주 단순한...Android xml에서 세로줄을 추가하려면...
<View
android:layout_width="fill_parent"
android:layout_height="1dp"
android:layout_marginTop="5dp"
android:rotation="90"
android:background="@android:color/darker_gray"/>
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:bottom="-3dp"
android:left="-3dp"
android:top="-3dp">
<shape android:shape="rectangle">
<solid android:color="@color/colorPrimary" />
<stroke
android:width="2dp"
android:color="#1fc78c" />
</shape>
</item>
</layer-list>
@Commons @ @일만지이▁@만comm.예를 Ware의 수 없습니다.layer-list
그기쉬운같다은경우음과리를 결합한 <rotate>
그리고.<shape>
크기에 문제를 일으킵니다.Android Vector Drawable은 Android Vector Drawable입니다.. (1x10dp를 할 수 .)width
,height
그리고.strokeColor
속성):
<?xml version="1.0" encoding="utf-8"?>
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:viewportWidth="1"
android:viewportHeight="10"
android:width="1dp"
android:height="10dp">
<path
android:strokeColor="#FFFFFF"
android:strokeWidth="1"
android:pathData="M0.5,0 V10" />
</vector>
수직선을 사용할 위치에 따라 다르지만, 예를 들어 수직 테두리를 원하는 경우 부모 뷰에 배경을 사용자 정의 그리기 가능하게 할 수 있습니다.그런 다음 다음 다음과 같이 그리기 가능한 항목을 정의할 수 있습니다.
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
<item>
<shape
android:shape="rectangle">
<stroke android:width="1dp" android:color="#000000" />
<solid android:color="#00ffffff" />
</shape>
</item>
<item android:right="1dp">
<shape android:shape="rectangle">
<solid android:color="#00ffffff" />
</shape>
</item>
</layer-list>
이 예에서는 뷰 오른쪽에 1dp 얇은 검은색 선을 작성하고 이 선을 배경으로 그릴 수 있습니다.
아무도 이 옵션을 언급하지 않은 것 같습니다.
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:drawable="@color/white" android:width="1dp"/>
</layer-list>
도형을 사용할 수 있지만 선 대신 직사각형으로 만들 수 있습니다.
android:shape="rectangle">
<stroke
android:width="5dp"
android:color="#ff000000"
android:dashGap="10px"
android:dashWidth="30px" />
그리고 당신의 레이아웃에 이것을 사용하세요...
<ImageView
android:layout_width="7dp"
android:layout_height="match_parent"
android:src="@drawable/dashline"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layerType="software"/>
대시의 크기에 따라 너비를 사용하여 한 줄로 묶어야 할 수도 있습니다.
이것이 치어스에 도움이 되길 바랍니다.
add this in your styles.xml
<style name="Divider">
<item name="android:layout_width">1dip</item>
<item name="android:layout_height">match_parent</item>
<item name="android:background">@color/divider_color</item>
</style>
<style name="Divider_invisible">
<item name="android:layout_width">1dip</item>
<item name="android:layout_height">match_parent</item>
</style>
then wrap this style in a linear layout where you want the vertical line, I used the vertical line as a column divider in my table.
<TableLayout
android:id="@+id/table"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:stretchColumns="*" >
<TableRow
android:id="@+id/tableRow1"
android:layout_width="fill_parent"
android:layout_height="match_parent"
android:background="#92C94A" >
<TextView
android:id="@+id/textView11"
android:paddingBottom="10dp"
android:paddingLeft="5dp"
android:paddingRight="5dp"
android:paddingTop="10dp" />
//...................................................................
<LinearLayout
android:layout_width="1dp"
android:layout_height="match_parent" >
<View style="@style/Divider_invisible" />
</LinearLayout>
//...................................................................
<TextView
android:id="@+id/textView12"
android:paddingBottom="10dp"
android:paddingLeft="5dp"
android:paddingRight="5dp"
android:paddingTop="10dp"
android:text="@string/main_wo_colon"
android:textColor="@color/white"
android:textSize="16sp" />
//...............................................................
<LinearLayout
android:layout_width="1dp"
android:layout_height="match_parent" >
<View style="@style/Divider" />
</LinearLayout>
//...................................................................
<TextView
android:id="@+id/textView13"
android:paddingBottom="10dp"
android:paddingLeft="5dp"
android:paddingRight="5dp"
android:paddingTop="10dp"
android:text="@string/side_wo_colon"
android:textColor="@color/white"
android:textSize="16sp" />
<LinearLayout
android:layout_width="1dp"
android:layout_height="match_parent" >
<View style="@style/Divider" />
</LinearLayout>
<TextView
android:id="@+id/textView14"
android:paddingBottom="10dp"
android:paddingLeft="5dp"
android:paddingRight="5dp"
android:paddingTop="10dp"
android:text="@string/total"
android:textColor="@color/white"
android:textSize="16sp" />
</TableRow>
<!-- display this button in 3rd column via layout_column(zero based) -->
<TableRow
android:id="@+id/tableRow2"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#6F9C33" >
<TextView
android:id="@+id/textView21"
android:padding="5dp"
android:text="@string/servings"
android:textColor="@color/white"
android:textSize="16sp" />
<LinearLayout
android:layout_width="1dp"
android:layout_height="match_parent" >
<View style="@style/Divider" />
</LinearLayout>
..........
.......
......
수직선을 만들려면 너비가 1dp인 직사각형을 사용합니다.
<shape>
<size
android:width="1dp"
android:height="16dp" />
<solid
android:color="#c8cdd2" />
</shape>
사용하지 stroke
,사용하다solid
("채우기" 색상)를 선택하여 선의 색상을 지정합니다.
저는 가로선과 세로선에 이 그림을 사용합니다.
https://gist.github.com/UtkuGlsvn/410ffb867bef3d89e85bf6bbd57950c1
예 xml:
<ImageView
android:id="@+id/imageView9"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="15dp"
android:layout_marginTop="20dp"
android:layout_marginEnd="15dp"
android:src="@drawable/vertical_line"
app:layout_constraintEnd_toEndOf="@+id/imageView7"
app:layout_constraintStart_toStartOf="@+id/imageView7"
app:layout_constraintTop_toBottomOf="@+id/imageView8" />
<View
android:layout_width="2dp"
android:layout_height="40dp"
android:background="#ffffff"
android:padding="10dp" />`
언급URL : https://stackoverflow.com/questions/2658772/vertical-line-using-xml-drawable
'programing' 카테고리의 다른 글
C에서 소켓 연결 상태를 찾는 방법은 무엇입니까? (0) | 2023.08.05 |
---|---|
난수 리스트 생성, 합계 1 (0) | 2023.08.05 |
Docker 바탕 화면에서 데이터 볼륨 찾기(Windows) (0) | 2023.08.05 |
PHP DateTime __construct() 위치 x에서 시간 문자열(xxxxxxxx)을 구문 분석하지 못했습니다. (0) | 2023.08.05 |
rest 컨트롤러에 대해서만 기본 URL을 변경하는 방법은 무엇입니까? (0) | 2023.08.05 |