private void addDummyBoundaryPatch(boolean isShadow,int xTo,InputView inputView,ViewPoint inputLayoutOrigin){
  final NinePatchDrawable inputDrawable=getColoredPatchDrawable(isShadow ? R.drawable.dummy_input_shadow : R.drawable.dummy_input);
  final NinePatchDrawable inputBorderDrawable=mPatchManager.getPatchDrawable(R.drawable.dummy_input_border);
  int width=inputDrawable.getIntrinsicWidth();
  if (mHasValueInput) {
    width+=mPatchManager.mValueInputWidth;
  }
  boolean inTopRow=(inputLayoutOrigin.y == 0);
  mHelper.setRtlAwareBounds(tempRect,mBlockViewSize.x,xTo - width,inputLayoutOrigin.y + (inTopRow ? mBlockTopPadding : 0),xTo,inputLayoutOrigin.y + inputView.getRowHeight());
  inputDrawable.setBounds(tempRect);
  inputBorderDrawable.setBounds(tempRect);
  mBlockPatches.add(inputDrawable);
  mBlockBorderPatches.add(inputBorderDrawable);
}

private void addDummyBoundaryPatch ( boolean isShadow , int xTo , InputView inputView , ViewPoint inputLayoutOrigin ) { final NinePatchDrawable inputDrawable = getColoredPatchDrawable ( isShadow ? R . drawable . dummy_input_shadow : R . drawable . dummy_input ) ; final NinePatchDrawable inputBorderDrawable = mPatchManager . getPatchDrawable ( R . drawable . dummy_input_border ) ; int width = inputDrawable . getIntrinsicWidth ( ) ; if ( mHasValueInput ) { width += mPatchManager . mValueInputWidth ; } boolean inTopRow = ( inputLayoutOrigin . y == 0 ) ; mHelper . setRtlAwareBounds ( tempRect , mBlockViewSize . x , xTo - width , inputLayoutOrigin . y + ( inTopRow ? mBlockTopPadding : 0 ) , xTo , inputLayoutOrigin . y + inputView . getRowHeight ( ) ) ; inputDrawable . setBounds ( tempRect ) ; inputBorderDrawable . setBounds ( tempRect ) ; mBlockPatches . add ( inputDrawable ) ; mBlockBorderPatches . add ( inputBorderDrawable ) ; }
add boundary patch for external dummy input .
