Except for creating your own layout
,有没有办法将小组指标从左侧移到右侧?
我想知道剂量Android有这样的属性来处理这个吗?
另外,android:indicatorStart|End|Left|Right
究竟是什么?我看着文档仍然不知道它。
答案 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);
}