android:更改用于导航的expandablelistview的指示器图标和大小

时间:2011-11-28 09:21:17

标签: android expandablelistview

我正在制作一个应用程序,其中我必须使用给定图像的可扩展列表视图。我正在谈论指示器图标及其大小导航路径。任何人都告诉我如何更改该图像。任何帮助将是赞赏。

6 个答案:

答案 0 :(得分:33)

您可以使用以下代码:

<ExpandableListView android:id="@+id/android:list"
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent"
    android:layout_marginTop="10dp"
    android:groupIndicator="@drawable/settings_selector" />

... setting_selector所在的位置:

<selector xmlns:android="http://schemas.android.com/apk/res/android">
   <item android:drawable="@drawable/up_arrow" 
         android:state_empty="true" />
   <item android:drawable="@drawable/down_arrow" 
         android:state_expanded="true" />
</selector>

答案 1 :(得分:13)

<ExpandableListView android:id="@+id/android:list"
       android:layout_width="fill_parent" 
       android:layout_height="fill_parent"
       android:layout_marginTop="10dp"
       android:groupIndicator="@drawable/settings_selector"
   />

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

他忘了把

<item android:drawable="@drawable/down_arrow" android:state_expanded="false"/>

在里面。 对我来说,android:state_empty无效。

答案 2 :(得分:6)

这是设置群组指标的有效方法

<selector xmlns:android="http://schemas.android.com/apk/res/android" >

<item android:state_empty="true">
    <layer-list>
        <item
            android:left="20dp"
            android:right="-30dp"
            android:top="120dp"
            android:bottom="10dp"
            android:drawable="@drawable/panier_plus">
        </item>
    </layer-list>
</item>

<item android:state_expanded="true">
    <layer-list>
        <item
            android:left="20dp"
            android:right="-30dp"
            android:top="120dp"
            android:bottom="10dp"
            android:drawable="@drawable/panier_minus"
             >
        </item>
    </layer-list>
</item>

答案 3 :(得分:1)

如果您的意思是展开/折叠组图标,那么

Drawable d = getResources().getDrawable(R.drawable.settings_selector);
//position it in the group layout by setting the bounds
//params are left and right bounds
myExpandableList.setIndicatorBounds(345,375);

myExpandableList.setGroupIndicator(d);

我对指标的大小不太了解,设置指标边界会影响指标的宽度而不是高度。

您可以通过将drawable设置为null来移除指示符,然后在ExpandableAdapter中的getGroupView()中使用图像视图为自定义布局充气。

public View getGroupView(int groupPosition, boolean isExpanded, View convertView,     ViewGroup parent) {
    View convertView = null;
    LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    convertView = inflater.inflate(R.layout.customLayout, null);

    return convertView;
}

虽然此方法需要一些额外的工作才能在扩展组时更改指示符,例如监听器以判断特定组是否已展开并相应地更改图像。

答案 4 :(得分:0)

这是正确的,请检查我的应用

<ExpandableListView
            android:id="@+id/expandableListView"
            android:layout_height="match_parent"
            android:layout_width="match_parent"
            android:indicatorLeft="?android:attr/expandableListPreferredItemIndicatorLeft"
            android:divider="@android:color/darker_gray"
            android:groupIndicator="@drawable/select_next"
            android:dividerHeight="0.5dp" />

请按照以下方式使用,如下所示....

    <selector xmlns:android="http://schemas.android.com/apk/res/android">
       <item android:drawable="@drawable/ic_add_black_24dp"
             android:state_empty="true" />
       <item android:drawable="@drawable/ic_remove_black_24dp"
             android:state_expanded="false" />
    </selector>

答案 5 :(得分:0)

尝试使用此:

<selector xmlns:android="http://schemas.android.com/apk/res/android">
  <item android:drawable="@drawable/ic_up_arrow" android:state_expanded="true" />
  <item android:drawable="@drawable/ic_down_arrow" android:state_pressed="false"/>
</selector>