如何从左到右移动默认的可扩展列表组指示器?

时间:2014-04-04 19:46:49

标签: android android-layout expandablelistview

Except for creating your own layout,有没有办法将小组指标从左侧移到右侧?

我想知道剂量Android有这样的属性来处理这个吗?

另外,android:indicatorStart|End|Left|Right究竟是什么?我看着文档仍然不知道它。

1 个答案:

答案 0 :(得分:1)

首先有两种方法可以根据设备的android版本移动组图标指示器,因此对于具有sdk版本18及更高版本(android 4.3及更高版本)的设备,有一种名为setIndicatorBoundsRelative(left,right)的方法,对于较低版本还有另一种叫做setIndicatorBounds(left,right)的方法。上述两个函数都会更改组指示符的边界,其中第一个参数将指示指针的位置设置为开始,右侧将指示指针的位置设置为结束。

代码:
在声明和初始化expandablelist的活动中,将以下内容声明为类变量(除了expandableListView的适配器和视图)

DisplayMetrics diaplayMetrics;
int width;

在on create function中:

@Override
onCreate(Bundle savedInstanceState) {
    //initialze displayMetrics
    metrics = new DisplayMetrics();
    //get the metrics of window
    getWindowManager().getDefaultDisplay().getMetrics(metrics);
    save width of window
    width = metrics.widthPixels;
    //check version of sdk(android version)
    if(android.os.Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.JELLY_BEAN_MR2) {
               //For sdk version bellow 18
           expandableListView.setIndicatorBounds(width - GetDipsFromPixel(50), width - GetDipsFromPixel(10));
    } else {
               //For sdk 18 and above 
           expandableListView.setIndicatorBoundsRelative(width - GetDipsFromPixel(50), width - GetDipsFromPixel(10));
    }
    expandableListView.setAdapter(listAdapter);
}

private int GetDipsFromPixel(int pixels) {
     // Get the screen's density scale
     final float scale = getResources().getDisplayMetrics().density;
     // Convert the dps to pixels, based on density scale
     return (int) (pixels * scale + 0.5f);
}