Android에서 모서리가 둥근 ListView를 어떻게 만듭니 까? 둥근 ListView를

Android에서 모서리가 둥근 ListView를 어떻게 만듭니 까?



답변

한 가지 방법이 있습니다 (Android 설명서 덕분에!).

다음을 파일 (customshape.xml)에 추가 한 후 (res / drawable / customshape.xml)

<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
     android:shape="rectangle">
     <gradient
         android:startColor="#SomeGradientBeginColor"
         android:endColor="#SomeGradientEndColor"
         android:angle="270"/>

    <corners
         android:bottomRightRadius="7dp"
         android:bottomLeftRadius="7dp"
         android:topLeftRadius="7dp"
         android:topRightRadius="7dp"/>
</shape> 

이 파일 작성을 완료하면 다음 방법 중 하나로 배경을 설정하십시오.

코드를 통해 :
listView.setBackgroundResource(R.drawable.customshape);

XML을 통해 컨테이너에 다음 속성을 추가하십시오 (예 : LinearLayout 또는 모든 필드에).

android:background="@drawable/customshape"

누군가가 유용하다고 생각하면 …


답변

그것이 효과가 있었지만 전체 배경색도 제거했습니다. 테두리를 만드는 방법을 찾고 XML 레이아웃 코드를이 코드로 바꾸면 좋았습니다!

<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <stroke android:width="4dp" android:color="#FF00FF00" />
    <padding android:left="7dp" android:top="7dp"
            android:right="7dp" android:bottom="7dp" />
    <corners android:radius="4dp" />
</shape> 


답변

@ 크리스 반 바엘

선택시 배경 사각형이 표시되는 상단 및 하단 행의 선택 강조 표시에 문제가있는 경우 목록보기의 선택기를 투명 색상으로 설정해야합니다.

listView.setSelector(R.color.transparent);

color.xml에서 다음을 추가하십시오.

<color name="transparent">#00000000</color>


답변

다른 답변은 저자 덕분에 매우 유용합니다!

그러나 강조 표시 @alvins @bharat dojeha를 비활성화하는 대신 선택시 항목을 강조 표시 할 때 사각형을 사용자 정의하는 방법을 볼 수 없었습니다.

다음은 동일한 모양을 선택할 때 윤곽이없고 밝은 회색으로 둥근 목록보기 항목 컨테이너를 만드는 데 효과적입니다.

xml에는 다음과 같은 선택기가 포함되어 있어야합니다 (예 : res / drawable / customshape.xml) :

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:state_pressed="true" >
    <shape xmlns:android="http://schemas.android.com/apk/res/android" >
        <stroke android:width="8dp" android:color="@android:color/transparent" />
        <padding android:left="14dp" android:top="14dp"
                android:right="14dp" android:bottom="14dp" />
        <corners android:radius="10dp" />
        <gradient
             android:startColor="@android:color/background_light"
             android:endColor="@android:color/transparent"
             android:angle="225"/>
    </shape>
</item>
<item android:state_pressed="false">
    <shape xmlns:android="http://schemas.android.com/apk/res/android" >
        <stroke android:width="8dp" android:color="@android:color/transparent" />
        <padding android:left="14dp" android:top="14dp"
                android:right="14dp" android:bottom="14dp" />
        <corners android:radius="10dp" />
        <gradient
             android:startColor="@android:color/darker_gray"
             android:endColor="@android:color/transparent"
             android:angle="225"/>
    </shape>
</item>

그런 다음 목록 어댑터를 구현하고 getView 메소드를 대체하여 사용자 정의 선택기를 배경으로 설정해야합니다.

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        //snip
        convertView.setBackgroundResource(R.drawable.customshape);
        //snip
    }

onCreate와 같이 기본 선택기 사각형을 ‘숨겨야’합니다 (항목 사이에 얇은 회색 구분선을 숨 깁니다).

listView.setSelector(android.R.color.transparent);
listview.setDivider(null);

이 방법은 다양한 선택 상태를 가진 ListViewItem뿐만 아니라 드로어 블에 대한 일반적인 솔루션을 해결합니다.


답변

최신 정보

요즘의 해결책 CardView은 둥근 모서리를 내장하여 지원하는 것입니다.


원문 답변 *

내가 찾은 또 다른 방법은 레이아웃 상단에 이미지를 그려서 레이아웃을 가리는 것입니다. 도움이 될 수 있습니다. 체크 아웃 안드로이드 XML은 잘린 모서리를 둥근


답변

선택에 대한 또 다른 솔루션은 목록의 첫 번째 항목과 마지막 항목의 문제를 강조합니다.

목록 배경의 상단과 하단에 반지름 이상으로 패딩을 추가합니다. 이렇게하면 선택 강조 표시가 모서리 곡선과 겹치지 않습니다.

투명하지 않은 선택 강조 표시가 필요한 경우 가장 쉬운 솔루션입니다.

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" >
    <solid android:color="@color/listbg" />
    <stroke
        android:width="2dip"
        android:color="#D5D5D5" />
    <corners android:radius="10dip" />

    <!-- Make sure bottom and top padding match corner radius -->
    <padding
        android:bottom="10dip"
        android:left="2dip"
        android:right="2dip"
        android:top="10dip" />
</shape>


답변

실제로, 나는 가장 좋은 해결책 이이 링크에 설명되어 있다고 생각합니다.

http://blog.synyx.de/2011/11/android-listview-with-rounded-corners/

즉, 상단, 하단 및 하단 항목에 다른 배경을 사용하므로 상단 및 하단 항목이 둥글게됩니다.