>  기사  >  Java  >  Android ListView 항목 배경색 설정 및 항목 클릭 응답이 없는 솔루션

Android ListView 항목 배경색 설정 및 항목 클릭 응답이 없는 솔루션

高洛峰
高洛峰원래의
2017-01-20 15:23:521306검색

다음은 목록 보기를 사용할 때 가장 흔히 발생하는 몇 가지 문제에 대해 설명합니다.
1. 배경색 변경 및 항목 클릭 색상
기본적으로 목록보기 항목의 배경색은 검은색이며, 사용자가 클릭하면 노란색이 됩니다. 사용자 정의 배경색으로 변경해야 하는 경우 일반적으로 세 가지 방법이 있습니다.
1) listSelector 설정
2) 레이아웃 파일에서 항목의 배경 설정
3) 어댑터의 getview에서 이 세 가지 방법은 기본 배경색과 항목의 클릭 색상을 변경할 수 있으며, 아래에서 별도로 설명하겠지만, 그 전에 버튼을 변경하기 전에

<?xml version="1.0" encoding="utf-8"?>
<selector
  xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="true" android:drawable="@color/light_blue"></item>
    <item android:state_pressed="false" android:drawable="@color/sgray"></item>
</selector>

파일을 작성해야 합니다. 목록보기 항목의 기본 배경색은 선택기로 사용할 수 있습니다. drawable은 색상 리소스 또는 이미지 리소스로 설정할 수 있습니다.

1) listview의 listSelector를 설정합니다

<ListView
   android:id="@+id/history_list"
   android:layout_width="fill_parent"
   android:layout_height="wrap_content"
   android:divider="#565C5D"
   android:dividerHeight="3dp"
   android:listSelector="@drawable/selector"
   android:cacheColorHint="@android:color/transparent">
</ListView>

2) listitem의 레이아웃 파일에 background 속성을 설정합니다. 다음은 listitem

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent"
  android:background="@drawable/selector">
    <TextView
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:text="历史记录"
          android:textColor="#ffffff"
          android:textSize="20sp"
          android:layout_centerInParent="true">
     </TextView>
</RelativeLayout>

의 레이아웃 파일입니다. 어댑터

 if(convertView ==null)
 {
     convertView = LayoutInflater.from(context).inflate(R.layout.listitem, null);
 }
 convertView.setBackgroundResource(R.drawable.selector);

의 getView 메소드는 클릭 시 항목의 기본 배경색과 배경색을 변경하는 것과 동일한 효과를 얻을 수 있습니다. 세 번째 방법이 가장 유연합니다. 목록 보기의 행을 다른 선택기로 설정해야 하는 경우에도 세 번째 방법만 사용할 수 있습니다.

2. 버튼, 체크박스, 기타 컨트롤을 클릭해도 반응이 없습니다.
목록 항목에 버튼이나 확인란과 같은 컨트롤이 포함된 경우 목록 항목은 기본적으로 포커스를 잃어 항목의 이벤트에 응답할 수 없게 됩니다. 가장 일반적인 해결 방법은 목록 항목의 레이아웃 파일에DescendantFocusability 속성을 설정하는 것입니다.

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:paddingTop="10dp"
  android:paddingBottom="10dp"
  android:paddingLeft="5dp"
  android:paddingRight="5dp"
  android:descendantFocusability="blocksDescendants">

  <CheckBox
   android:id="@+id/history_item_checkbt"
   android:layout_height="30dp"
   android:layout_width="wrap_content"
   android:layout_centerVertical="true"
   android:layout_alignParentLeft="true"
   android:checked="false"
   >
  </CheckBox>

  <ImageView
   android:id="@+id/history_item_image"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:layout_centerVertical="true"
   android:layout_toRightOf="@id/history_item_checkbt"
   android:background="@drawable/item_icon">
  </ImageView>

  
  <Button
   android:id="@+id/history_item_edit_bt"
   android:layout_alignParentRight="true"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:layout_centerVertical="true"
   android:text="编辑"
   android:textColor="#ffffff"
   android:textSize="14sp"
   android:background="@drawable/button_bg">
  </Button>

  <TextView
   android:id="@+id/history_item_time_tv"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:layout_centerVertical="true"
   android:textColor="#565C5D"
   android:textSize="14sp"
   android:text="10-01 10:20"
   android:layout_marginRight="5dp"
   android:layout_toLeftOf="@id/history_item_edit_bt">
  </TextView>

  <TextView
   android:id="@+id/history_item_title_tv"
   android:layout_height="wrap_content"
   android:layout_width="fill_parent"
   android:layout_centerVertical="true"
   android:textColor="#565C5D"
   android:textSize="14sp"
   android:text="xxxxxxxxXXXXXXXXXXXXXXXX"
   android:ellipsize="end"
   android:maxLines="1"
   android:layout_toRightOf="@id/history_item_image"
   android:layout_toLeftOf="@id/history_item_time_tv"
   android:layout_marginLeft="3dp">
  </TextView>
</RelativeLayout>

Android ListView의 항목 배경색 설정 및 항목 클릭 무반응에 대한 해결 방법에 대한 더 많은 관련 기사를 보려면 PHP 중국어 웹사이트를 주목하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.