下面列出了android.widget.ListView#getWidth ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。
public static void setupDivider(Context context, ListView view, boolean useNewDivider) {
if (useNewDivider) {
int viewWidth = view.getWidth();
// sometimes viewWidth is 0, and in this case we default to a reasonable value taken from dimens.xml
int dividerWidth;
if (viewWidth == 0) {
dividerWidth = (int)context.getResources().getDimension(R.dimen.entity_select_divider_left_inset);
} else {
dividerWidth = (int)(viewWidth / 6.0);
}
dividerWidth += (int)context.getResources().getDimension(R.dimen.row_padding_horizontal);
LayerDrawable dividerDrawable = (LayerDrawable)context.getResources().getDrawable(R.drawable.divider_case_list_modern);
dividerDrawable.setLayerInset(0, dividerWidth, 0, 0, 0);
view.setDivider(dividerDrawable);
view.setDividerHeight((int)TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 1,
context.getResources().getDisplayMetrics()));
} else {
view.setDivider(null);
}
}
@Override
public void applyStylesWithContext(PXStylerContext stylerContext) {
// view.setOverScrollMode(ListView.OVER_SCROLL_ALWAYS); // needed?
OverscrollStyle overscrollStyle = stylerContext.getOverscrollStyle();
if (overscrollStyle != null) {
// Get the ListView through the virtual styleable.
ListView view = (ListView) stylerContext.getStyleable();
// Apply the overscroll
setOverscrollDistance(view, overscrollStyle.distance);
int viewWidth = view.getWidth();
if (overscrollStyle.header != null) {
view.setOverscrollHeader(PXDrawableUtil.createDrawable((viewWidth != 0) ? viewWidth
: overscrollStyle.distance, overscrollStyle.distance,
overscrollStyle.header));
}
if (overscrollStyle.footer != null) {
view.setOverscrollFooter(PXDrawableUtil.createDrawable((viewWidth != 0) ? viewWidth
: overscrollStyle.distance, overscrollStyle.distance,
overscrollStyle.footer));
}
}
super.applyStylesWithContext(stylerContext);
}
public void apply() {
ListView listView = getListView();
listView.removeCallbacks(this);
listPosition = null;
positionInfo = null;
if (listView.getWidth() > 0) {
run();
} else {
listView.post(this);
}
}
@Override
public void run() {
ListView listView = getListView();
listView.removeCallbacks(this);
getAdapter().updateConfiguration(listView.getWidth());
if (positionInfo != null) {
int position = getAdapter().getPositionFromInfo(positionInfo);
if (position != -1 && position != listPosition.position) {
// Fix list position due to rows count changing
new ListPosition(position, listPosition.y).apply(listView);
}
} else {
currentWidth = listView.getWidth();
}
}
@Override
public void applyStylesWithContext(PXStylerContext stylerContext) {
ListView listView = (ListView) stylerContext.getStyleable();
// create the divider drawable and set it to the list
int width = listView.getWidth();
if (width <= 0) {
View parent = (View) PXStyleAdapter.getStyleAdapter(listView).getParent(listView);
if (parent != null) {
width = parent.getWidth();
}
}
listView.setDivider(PXDrawableUtil.createDrawable(width, listView.getDividerHeight(),
stylerContext.getDividerFill()));
}