21

親要素の間にのみ仕切りを配置したい。設定すると

android:divider="@drawable/divider"
androidは親要素間に仕切りを作成しますが、子要素間にも仕切りを作成します。追加すると
android:childDivider="@color/transparent"
androidは子要素間の仕切りを削除しますが、子要素間の空きスペースは残ります。なんで?私はしようとしました
android:dividerHeight="0dp"
しかし、何も起こりませんでした。

親要素の間に仕切りを設定したいのですが、子要素の間に仕切りや空きスペースは必要ありません。

それを行う方法はありますか?

4

9 に答える 9

29

展開可能なリストの親の間ではなく、子ビューからのみ仕切りを削除するには:

XML で属性を追加android:childDivider="#00000000"します。ExapandableListView

<ExpandableListView
    android:id="@+id/elv"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:childDivider="#00000000" />

詳細については、このページを参照してください

于 2013-11-28T19:40:57.657 に答える
4

viewコツは、折りたたみグループ レイアウトと最後の子レイアウト用にエクストラを作成することです。

collapse_group.xml:

<LinearLayout
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:background="@android:color/transparent">

    <TextView
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:textSize="17sp"/>

    <!-- this is the extra view-->  
    <View 
       android:layout_width="fill_parent"
       android:layout_height="10dp"
       android:background="@android:color/transparent"/>        

</LinearLayout>

展開された_group.xml:

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:background="@android:color/transparent">

    <TextView
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:textSize="17sp"/>

    <!-- no extra view-->       

</LinearLayout>

子ビューに同じ手法を適用し、最後の子ビューに余分なビューを挿入します

于 2011-10-08T02:47:47.937 に答える
1

子ディバイダーのみを削除したい場合、簡単なトリックの 1 つは、子アイテムの背景色と同じ色のドローアブルを作成できることです。次に、子ディバイダーとして設定します。

ShapeDrawable sd1 = new ShapeDrawable(new RectShape());
    sd1.getPaint().setColor(YOUR CHILD ITEM BACKGROUND COLOR);
    mExpListView.setChildDivider(sd1);

またはxmlを使用:

android:childDivider="@color/child_bg_color"
于 2016-05-05T11:37:30.213 に答える
1

私がしたことは、ExpandableListView の仕切りを 0 に設定し、「仕切り」グループを ExpandableListAdapter に挿入することでした。

// To get dividers between the groups we add 'divider views' as if they were  
// themselves groups.
public int getGroupCount() {
// Actual groups are at even groupPositions, dividers at odd
    return (this.data.size() * 2) - 1;
}

public long getGroupId(int groupPosition) {
    if(groupPosition % 2 != 0) return R.id.divider;
    else return R.id.group;
}

public View getGroupView(int groupPosition, boolean isExpanded,
        View convertView, ViewGroup parent) {
    if(groupPosition % 2 != 0) {
        View divider = convertView;
        if(divider == null || divider.getId() != R.id.divider) {
            divider = this.inflater.inflate(R.layout.divider, null);
        }

        return divider;
    }

    View group = convertView;
    if(group == null || group.getId() != R.id.group) {
        group = this.inflater.inflate(R.layout.group, null);
    }

    return group;
}
于 2011-09-30T01:08:33.230 に答える
1
expListView.setDividerHeight(10);
expListView.setChildDivider(getResources().getDrawable(
            android.R.color.white));
于 2015-02-19T10:16:58.887 に答える
0

ExpandableListView (ヘッダー) の親要素の間に仕切りが必要で、 children と parent の間に仕切りが必要ない場合は、明らかに最も自然なケースですが、次のようにする必要があります。

  1. 親 xml ファイルで、必要な仕切りの高さと仕切りの色を使用して、レイアウトの下部にビューを 1 つ追加します。例:

  2. 子 xml ファイルでも同じことを行います。必要な仕切りの高さと仕切りの色を使用して、レイアウトの下部にビューを 1 つ追加します。区切り線の色と高さが親 xml と同じであることを確認してください。

  3. ExpandableListView アダプター メソッド public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) に、次のようにビュー ディバイダーの状態を管理します。例:

    if(isExpanded){ headerDividerView.setBackgroundColor(ContextCompat.getColor(context,R.color.darker_grey)); }else{ headerDividerView.setBackgroundColor(ContextCompat.getColor(context,android.R.color.transparent)); }

ところで:私の場合、 R.color.darker_grey は親の背景色です

  1. ExpandableListView xml からすべての仕切りと仕切りの高さを削除します。ExpandableListView に仕切りと仕切りの高さを持たないようにします。次のような属性を使用できます。

    Android:groupIndicator="@null" Android:childIndicator="@null" Android:divider="@null" Android:dividerHeight="0dp"

于 2015-11-07T10:03:19.913 に答える
-2

このように設定しますandroid:divider="@null"親用の仕切りなし 親用の仕切りをandroid:divider="2dp"設定

 <ExpandableListView
        android:id="@+id/expandable_list"
        android:layout_width="fill_parent"
        android:layout_height="match_parent"
        android:background="#ffffff"
        android:divider="2dp"
        android:groupIndicator="@drawable/group_indicator" />
于 2013-03-28T10:18:08.653 に答える