How to change the position of the indicator of the ExpandableListView group?

I want to change the group indicator ExpandableListView to the right with filling.

I used a custom adapter to load data into an ExpandableListView .

This is my ExpandableListView xml.

 <ExpandableListView android:id="@+id/Ex_offers" android:layout_width="250dp" android:layout_height="400dp" android:layout_alignParentBottom="true" android:layout_alignParentLeft="true" android:layout_alignParentRight="true" android:childDivider="#00000000" android:groupIndicator="@drawable/settings_selector" android:listSelector="@android:color/transparent"> </ExpandableListView> 

This is GroupView xml

  <TextView android:id="@+id/lblListHeadertwo" android:layout_width="match_parent" android:layout_height="40dp" android:background="@drawable/transperant_bar" android:fontFamily="Lato" android:paddingLeft="15dp" android:textColor="#daac56" android:textStyle="bold" android:textSize="17sp" android:paddingTop="8dp" /> 

This is ChildView xml

  <TextView android:id="@+id/text_offers" android:layout_width="300dp" android:layout_height="20dp" android:layout_alignParentLeft="true" android:layout_alignParentRight="true" android:layout_alignParentTop="true" android:background="@drawable/transperant_bar" android:paddingLeft="?android:attr/expandableListPreferredChildPaddingLeft" android:textColor="#daac56" android:textSize="14sp"/> <ImageView android:id="@+id/img" android:layout_width="15dp" android:layout_height="15dp" android:layout_marginLeft="12dp"/> 

This is the output image, I want to set the margin for this indicator.

enter image description here

+6
source share
2 answers

setIndicatorBounds (int, int) does not work properly for Android 4.3. They introduced a new setIndicatorBoundsRelative (int, int) method, which works fine for 4.3.

 public int GetPixelFromDips(float pixels) { // Get the screen density scale final float scale = getResources().getDisplayMetrics().density; // Convert the dps to pixels, based on density scale return (int) (pixels * scale + 0.5f); } @Override public void onWindowFocusChanged(boolean hasFocus) { super.onWindowFocusChanged(hasFocus); DisplayMetrics metrics = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(metrics); int width = metrics.widthPixels; if(android.os.Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.JELLY_BEAN_MR2) { explvList.setIndicatorBounds(width-GetPixelFromDips(35), width-GetPixelFromDips(5)); } else { explvList.setIndicatorBoundsRelative(width-GetPixelFromDips(35), width-GetPixelFromDips(5)); } } 
+19
source
 private void setGroupIndicatorToRight() { /* Get the screen width */ DisplayMetrics dm = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(dm); int width = dm.widthPixels; expandableList.setIndicatorBounds(width - getDipsFromPixel(35), width - getDipsFromPixel(5)); } // Convert pixel to dip public int getDipsFromPixel(float pixels) { // Get the screen density scale final float scale = getResources().getDisplayMetrics().density; // Convert the dps to pixels, based on density scale return (int) (pixels * scale + 250.5f); } 
0
source

All Articles