fix onLayout