
comportamiento de edit text
#1
Escrito 05 abril 2014 - 09:20
¿como puedo lograr este comportamiento?
Saludos!
#2
Escrito 05 abril 2014 - 10:55
http://stackoverflow...eyboard-pops-up
hay que agregar esto al manifest:
android:windowSoftInputMode="adjustResize|stateHidden"
pero esto no me funciona aun






#3
Escrito 07 abril 2014 - 08:56
Yo encontré éste mismo detalle y lo solucioné mirando los ejemplos que trae el mismo Delphi y que mencioné en la misma publicación, aquí el extracto de ese asunto.
Y como todo lo nuevo, hay algunos detalles que hay que tomar en cuenta a la hora de escribir nuestro código,
por ejemplo:
¿Cómo hacer que nuestra aplicación se ajuste en la pantalla para que no se encime en los contoles donde vamos a capturar el monto a convertir?.
La solución la encontré en uno de los ejemplos que vienen con delphi y se llama “ScrollableForm” el cual se encuentra en el directorio “RAD Studio\11.0\Samples\FireMonkeyMobile”.
Se requirió de agregar dos componentes más, un TVertScrollBox y un TLayout para poder ajustar la pantalla cuando se intenta escribir en los controles sin que interfiriera el teclado numérico.
delphi
{******************************************************************************} { código para ajustar los objetos cuando se muestra el teclado en la pantalla } {******************************************************************************} procedure THeaderFooterForm.RestorePosition; begin VertScrollBox1.ViewportPosition := PointF(VertScrollBox1.ViewportPosition.X, 0); Layout1.Align := TAlignLayout.alClient; VertScrollBox1.RealignContent; end; procedure THeaderFooterForm.UpdateKBBounds; var LFocused : TControl; LFocusRect: TRectF; begin FNeedOffset := False; if Assigned(Focused) then begin LFocused := TControl(Focused.GetObject); LFocusRect := LFocused.AbsoluteRect; LFocusRect.Offset(VertScrollBox1.ViewportPosition); if (LFocusRect.IntersectsWith(TRectF.Create(FKBBounds))) and (LFocusRect.Bottom > FKBBounds.Top) then begin FNeedOffset := True; Layout1.Align := TAlignLayout.alHorizontal; VertScrollBox1.RealignContent; Application.ProcessMessages; VertScrollBox1.ViewportPosition := PointF(VertScrollBox1.ViewportPosition.X, LFocusRect.Bottom - FKBBounds.Top); end; end; if not FNeedOffset then RestorePosition; end; procedure THeaderFooterForm.FormCreate(Sender: TObject); begin VertScrollBox1.OnCalcContentBounds := CalcContentBoundsProc; end; procedure THeaderFooterForm.FormVirtualKeyboardHidden(Sender: TObject; KeyboardVisible: Boolean; const Bounds: TRect); begin FKBBounds.Create(0, 0, 0, 0); FNeedOffset := False; RestorePosition; end; procedure THeaderFooterForm.FormVirtualKeyboardShown(Sender: TObject; KeyboardVisible: Boolean; const Bounds: TRect); begin FKBBounds := TRectF.Create(Bounds); FKBBounds.TopLeft := ScreenToClient(FKBBounds.TopLeft); FKBBounds.BottomRight := ScreenToClient(FKBBounds.BottomRight); UpdateKBBounds; end; procedure THeaderFooterForm.CalcContentBoundsProc(Sender: TObject; var ContentBounds: TRectF); begin if FNeedOffset and (FKBBounds.Top > 0) then begin ContentBounds.Bottom := Max(ContentBounds.Bottom, 2 * ClientHeight - FKBBounds.Top); end; end; {******************************************************************************}
Espero te ayude.
Saludos
#4
Escrito 08 abril 2014 - 03:43
Hola amigo look, en mi bitácora hay una publicación que aborda el tema Construir una App iOS paso a paso.
Yo encontré éste mismo detalle y lo solucioné mirando los ejemplos que trae el mismo Delphi y que mencioné en la misma publicación, aquí el extracto de ese asunto.
Y como todo lo nuevo, hay algunos detalles que hay que tomar en cuenta a la hora de escribir nuestro código,
por ejemplo:
¿Cómo hacer que nuestra aplicación se ajuste en la pantalla para que no se encime en los contoles donde vamos a capturar el monto a convertir?.
La solución la encontré en uno de los ejemplos que vienen con delphi y se llama “ScrollableForm” el cual se encuentra en el directorio “RAD Studio\11.0\Samples\FireMonkeyMobile”.
Se requirió de agregar dos componentes más, un TVertScrollBox y un TLayout para poder ajustar la pantalla cuando se intenta escribir en los controles sin que interfiriera el teclado numérico.
delphi
{******************************************************************************} { código para ajustar los objetos cuando se muestra el teclado en la pantalla } {******************************************************************************} procedure THeaderFooterForm.RestorePosition; begin VertScrollBox1.ViewportPosition := PointF(VertScrollBox1.ViewportPosition.X, 0); Layout1.Align := TAlignLayout.alClient; VertScrollBox1.RealignContent; end; procedure THeaderFooterForm.UpdateKBBounds; var LFocused : TControl; LFocusRect: TRectF; begin FNeedOffset := False; if Assigned(Focused) then begin LFocused := TControl(Focused.GetObject); LFocusRect := LFocused.AbsoluteRect; LFocusRect.Offset(VertScrollBox1.ViewportPosition); if (LFocusRect.IntersectsWith(TRectF.Create(FKBBounds))) and (LFocusRect.Bottom > FKBBounds.Top) then begin FNeedOffset := True; Layout1.Align := TAlignLayout.alHorizontal; VertScrollBox1.RealignContent; Application.ProcessMessages; VertScrollBox1.ViewportPosition := PointF(VertScrollBox1.ViewportPosition.X, LFocusRect.Bottom - FKBBounds.Top); end; end; if not FNeedOffset then RestorePosition; end; procedure THeaderFooterForm.FormCreate(Sender: TObject); begin VertScrollBox1.OnCalcContentBounds := CalcContentBoundsProc; end; procedure THeaderFooterForm.FormVirtualKeyboardHidden(Sender: TObject; KeyboardVisible: Boolean; const Bounds: TRect); begin FKBBounds.Create(0, 0, 0, 0); FNeedOffset := False; RestorePosition; end; procedure THeaderFooterForm.FormVirtualKeyboardShown(Sender: TObject; KeyboardVisible: Boolean; const Bounds: TRect); begin FKBBounds := TRectF.Create(Bounds); FKBBounds.TopLeft := ScreenToClient(FKBBounds.TopLeft); FKBBounds.BottomRight := ScreenToClient(FKBBounds.BottomRight); UpdateKBBounds; end; procedure THeaderFooterForm.CalcContentBoundsProc(Sender: TObject; var ContentBounds: TRectF); begin if FNeedOffset and (FKBBounds.Top > 0) then begin ContentBounds.Bottom := Max(ContentBounds.Bottom, 2 * ClientHeight - FKBBounds.Top); end; end; {******************************************************************************}
Espero te ayude.
Saludos
Hola amigo, gracias , esta insteresante...
Saludos!