이 코드가 있습니다.
<ListView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/cashItemsList"
android:cacheColorHint="#00000000"
android:divider="@drawable/list_divider"></ListView>
어디에 @drawable/list_divider
:
<shape
xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="line">
<stroke
android:width="1dp"
android:color="#8F8F8F"
android:dashWidth="1dp"
android:dashGap="1dp" />
</shape>
하지만 칸막이가 보이지 않습니다.
답변
여러분, 1dp 또는 1dip 대신 1px를 사용해야하는 이유는 다음과 같습니다. 1dp 또는 1dip을 지정하면 Android가이를 축소합니다. 120dpi 장치에서는 0.75px처럼 변환되어 0으로 반올림됩니다. 일부 장치에서는 2-3 픽셀로 변환되며 일반적으로보기 나쁘거나 엉성해 보입니다.
디바이더의 경우 1 픽셀 디바이더를 원하면 1px가 올바른 높이이며 “모든 것이 딥이어야 함”규칙의 예외 중 하나입니다. 모든 화면에서 1 픽셀이됩니다. 또한 1px는 일반적으로 hdpi 이상 화면에서 더 잘 보입니다.
“더 이상 2012 년이 아닙니다”편집 : 특정 화면 밀도에서 시작하여 dp / dip으로 전환해야 할 수 있습니다.
답변
이것은 해결 방법이지만 나를 위해 작동합니다.
res / drawable / divider.xml을 다음과 같이 생성했습니다.
<?xml version="1.0" encoding="UTF-8"?>
<shape
xmlns:android="http://schemas.android.com/apk/res/android">
<gradient android:startColor="#ffcdcdcd" android:endColor="#ffcdcdcd" android:angle="270.0" />
</shape>
그리고 listview 항목의 styles.xml에 다음 줄을 추가했습니다.
<item name="android:divider">@drawable/divider</item>
<item name="android:dividerHeight">1px</item>
중요한 부분은이 1px 설정을 포함하는 것이 었습니다. 물론 드로어 블은 그라디언트 (1px)를 사용하며 이것이 최적의 솔루션이 아닙니다. 뇌졸중을 사용해 보았지만 작동하지 않았습니다. (스타일을 사용하지 않는 것 같으므로 ListView에 android : dividerHeight = “1px”속성을 추가하십시오.
답변
추가 android:dividerHeight="1px"
하면 작동합니다.
<ListView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/cashItemsList"
android:cacheColorHint="#00000000"
android:divider="@drawable/list_divider" android:dividerHeight="1px"></ListView>
답변
문제는 필요한 android : dividerHeight가 누락되었다는 사실과 드로어 블에 선 두께를 지정하려고한다는 사실에서 비롯됩니다. 이상한 이유. 기본적으로 예제가 작동하도록하려면 다음과 같은 작업을 수행 할 수 있습니다.
드로어 블을 직사각형이나 선으로 만드십시오. 어느 쪽이든 치수를 설정할 수 없으므로 다음 중 하나를 수행하십시오.
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="line">
<stroke android:color="#8F8F8F" android:dashWidth="1dp" android:dashGap="1dp" />
</shape>
또는:
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
<solid android:color="#8F8F8F"/>
</shape>
그런 다음 사용자 지정 스타일을 만듭니다 (기본 설정 만 있지만 항목을 재사용 할 수있는 것을 좋아합니다).
<style name="dividedListStyle" parent="@android:style/Widget.ListView">
<item name="android:cacheColorHint">@android:color/transparent</item>
<item name="android:divider">@drawable/list_divider</item>
<item name="android:dividerHeight">1dp</item>
</style>
마지막으로 사용자 지정 스타일을 사용하여 목록보기를 선언합니다.
<ListView
style="@style/dividedListStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/cashItemsList">
</ListView>
알려주지 않으면이 스 니펫을 사용하는 방법을 알고 있다고 가정합니다. 기본적으로 귀하의 질문에 대한 대답은 드로어 블에서 구분선 두께를 설정할 수 없다는 것입니다. 너비를 정의되지 않은 상태로두고 대신 android : dividerHeight를 사용하여 설정해야합니다.
답변
문서에서 :
public void setDivider(Drawable divider) on ListView
/**
* Sets the drawable that will be drawn between each item in the list. If the drawable does
* not have an intrinsic height, you should also call {@link #setDividerHeight(int)}
*
* @param divider The drawable to use.
*/
같은 외모 setDividerHeight()
가 더 본질적인 높이가없는 경우 디바이더의 순서를 호출해야합니다은 표시하기
답변
귀하는 @drawable/list_divide
다음과 같아야합니다 :
<shape
xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="line">
<stroke
android:height="1dp"
android:color="#8F8F8F"
android:dashWidth="1dp"
android:dashGap="1dp" />
</shape>
귀하의 버전에서을 제공하고 android:width="1dp"
간단히로 변경하면 android:height="1dp"
작동합니다!
답변
로부터 문서 :
파일 위치 :
res / drawable / filename.xml
파일명은 자원 ID로서 사용된다 .
기본적으로, 당신은라는 이름의 파일을 넣어해야합니다 list_divider.xml
으로 res/drawable/
당신이 그것을 액세스 할 수 있도록를 R.drawable.list_divider
; 그런 식으로 액세스 할 수 있다면 android:divider="@drawable/list_divider"
.NET 용 XML에서 사용할 수 있습니다 ListView
.