在使用GridLayoutManager的recyclerview中,我有VideoViews,其中有2列纵向显示和4列横向显示。我想根据屏幕尺寸调整VideoView的大小,因此,在纵向模式下,我将屏幕的宽度除以2,然后将其设置为VideoView的宽度和高度,在横向模式下,将其宽度除以4,然后将其设置为height和VideoView的宽度。现在,我的方法是扩展VideoView并覆盖onMeasure。
public class CustomVideoView extends VideoView {
public CustomVideoView(Context context) {
super(context);
}
public CustomVideoView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public CustomVideoView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
public CustomVideoView(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
super(context, attrs, defStyleAttr, defStyleRes);
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
int desiredWidth = getSuggestedMinimumWidth() + getPaddingLeft() + getPaddingRight();
int desiredHeight = getSuggestedMinimumHeight() + getPaddingTop() + getPaddingBottom();
setMeasuredDimension(
measureDimension(desiredWidth, widthMeasureSpec),
measureDimension(desiredWidth, widthMeasureSpec)
);
}
}
宽度会根据GridLayoutManager中的列数自动调整。但是,我不想扩展每个需要调整大小的视图。
有更好的方法吗?