8

私は expandablelistview を持っていて、グループ項目の間にパディング (またはマージン) を追加したいです。グループ項目で使用margin-bottonしましたが、動作しますが、グループ項目とその子にも適用されます。グループ項目間にスペースを保持したい、グループアイテムとその子の間ではなく、私は次のように働きます:

メインxml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" 
    android:background="#FFFFFF">

    <TextView android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:typeface="serif"
        android:textSize="25dip"
        android:textColor="#025f7c"
        android:text="@string/tv_allAddresses"
        android:layout_gravity="center"
        android:layout_marginTop="20dip"
        android:layout_marginBottom="25dip"/>

    <ExpandableListView
        android:id="@+id/elv_all_addresses_addresses"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
         android:padding="10dip">
    </ExpandableListView>

</LinearLayout>

グループxml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <TextView
        android:id="@+id/tv_all_address_group_groupName"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:paddingLeft="30dip"
        android:textColor="#000000"
        android:textSize="20dip"
        android:typeface="serif" />

</LinearLayout>

子xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="horizontal" >

    <TextView
        android:id="@+id/tv_all_address_child_label"
        android:paddingLeft="50dip"
        android:typeface="serif"
        android:textSize="15dip"
        android:textColor="@color/BlueViolet"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

    <TextView
        android:id="@+id/tv_all_address_child_value"
        android:textColor="#000000"
        android:layout_marginLeft="10dip"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

</LinearLayout>
4

6 に答える 6

6

からadapter拡張してBaseExpandableListAdapterいるため、グループが展開されていないときにパディングをグループ項目に設定し、グループが展開されているときにパディングを削除し、グループごとにパディングを最後の子に設定することで、プログラムでパディングを設定できます。

パディングを最後の子に設定する

public View getChildView(int groupPosition, int childPosition,
            boolean isLastChild, View convertView, ViewGroup parent) {
if (childPosition == groups.get(groupPosition).getChilds().size() - 1) {
            convertView.setPadding(0, 0, 0, 20);
        } else
            convertView.setPadding(0, 0, 0, 0);
        return convertView;
}

展開時にグループ項目にパディングを設定する

public View getGroupView(int groupPosition, boolean isExpanded,
            View convertView, ViewGroup parent) {
    if (isExpanded)
            convertView.setPadding(0, 0, 0, 0);
        else
            convertView.setPadding(0, 0, 0, 20);
        return convertView;
    }

ノート

グループと子にarraylistを使用していると仮定しますgroups.get(groupPosition).getChilds().size() - 1。構造に応じて、グループのサイズに置き換えることができます

于 2013-02-10T21:47:03.477 に答える
2

子が最後かどうかを確認し、そこにパディングを追加します

public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) {

    if (isLastChild) {
        convertView.setPadding(0, 0, 0, 30);
    }

     return convertView; 
}
于 2015-10-05T03:59:29.290 に答える
0

私は同じ種類の問題を抱えていたので、幼稚な解決策を思いつきました。私がしたことは、展開可能なリストビューの親レイアウトファイルと子レイアウトファイルの両方で同じプロパティを持つ線形レイアウトに追加したことです。グループをクリックすると、親レイアウト ファイルの「線形レイアウト」が非表示になり、作業が完了しました。

グループ レイアウト ファイル

<TextView
        android:id="@+id/expandable_faqparent_id"
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:layout_margin="2dp"
        android:layout_marginBottom="30dp"
        android:background="#ffffff"
        android:gravity="center"
        android:text="hello this is dummy text"
        android:textSize="20dp"
        android:textStyle="bold" />
<LinearLayout
    android:id="@+id/linear_parent_faq"
    android:layout_width="match_parent"
    android:layout_height="10dp"
    android:background="#cfd8dc"
    android:layout_weight="0.06"
    android:orientation="vertical">
</LinearLayout>

子レイアウト ファイル

<TextView
    android:layout_width="match_parent"
    android:layout_height="50dp"
    android:id="@+id/expandable_faq_child_id"
    android:text="DUMMY PARENT"
    android:background="#ffffff"
    android:gravity="center"
    android:elevation="2dp"/>
<LinearLayout
    android:id="@+id/linearfaq"
    android:layout_width="match_parent"
    android:layout_height="10dp"
    android:background="#cfd8dc"
    android:orientation="vertical">
</LinearLayout>

いずれかのグループがクリックされたときに線形レイアウトを非表示にするには この行をアダプター クラスの addChildView メソッドに追加します

lv.setVisibility(View.INVISIBLE);

ここで lv には線形レイアウトの ID が含まれます

linear_parent_faq

グループ レイアウト ファイルの。

于 2016-02-16T19:06:08.773 に答える