programacion - mostrar cuadro de dialogo android
Mostrar diálogo de progreso adjunto a textview (5)
Envuelva la vista de texto y un widget de barra de progreso en un diseño apropiado. Más sobre ProgressBar aquí: http://developer.android.com/reference/android/widget/ProgressBar.html
Necesito mostrar el círculo de progreso adjunto a la vista de texto, pero debe ser de tal manera que no se resista al usuario para tocar otros componentes de la pantalla. algo como esto
¿Cualquier pista?
He hecho algo como esto, pero también incluye un ícono. Aquí hay un código listo para hornear para aquellos que están buscando esto.
En tu uso de diseño
<LinearLayout
android:id="@+id/my_element"
android:layout_width="match_parent"
android:layout_marginLeft="20dp"
android:layout_marginTop="5dp"
android:layout_height="20dp">
<ImageView
android:layout_width="20dp"
android:layout_height="20dp"
android:src="@drawable/ic_action_place"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="20dp"
android:textColor="@color/black"
android:textSize="12sp"
android:gravity="center_vertical"
android:text=""/>
<ProgressBar
android:layout_width="wrap_content"
android:layout_height="20dp"
style="@android:style/Widget.ProgressBar.Small"
android:layout_marginRight="5dp" />
</LinearLayout>
Esta es una distribución lineal que contiene la vista de texto (un icono adicional en el frente solo para patadas) y una barra de progreso giratoria de pequeño tamaño.
En la actividad / fragmento agregar
LinearLayout llMyElement;
En el uso correspondiente onCreate / onCreateView
llMyElement = (LinearLayout) view.findViewById(R.id.my_element);
En AsyncTask onPostExecute o donde quieras establecer el texto después de un proceso, llama a setLoadingText(llMyElement, “Some Result");
E incluya esta función de ayuda que establece el texto en su clase de actividad o en cualquier lugar adecuado, como una clase Util.
public void setLoadingText(LinearLayout layout, String text)
{
int count = layout.getChildCount();
for(int i = 0; i < count; i++)
{
if(layout.getChildAt(i) instanceof TextView)
((TextView) layout.getChildAt(i)).setText(text);
if(layout.getChildAt(i) instanceof ProgressBar)
layout.getChildAt(i).setVisibility(View.GONE);
}
}
Y eso es todo ... ¡Disfrútalo!
Tal cosa no es posible con solo un TextView IMO. Supongo que la mejor manera de imitar ese efecto sería tener un LinearLayout con Textview y una Imageview (orientación horizontal). Tener la imagen vista invisible inicialmente. Alternar la visibilidad de la vista de la imagen condicionalmente. Es decir, cuando comience la acción, establezca la visibilidad y, cuando termine la acción, escóndala de nuevo. Espero que entienda la idea.
establecer el diseño exterior como Framelayout, dentro de TextView / EditText y ProgressBar establecer (layout gravity "Right")
<FrameLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content" >
<TextView
android:id="@+id/TextView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingRight="24dp"
android:text="Getting Location"
android:textAppearance="?android:attr/textAppearanceSmall"
android:textSize="12dp" >
<requestFocus />
</TextView>
<ProgressBar
android:id="@+id/ProgressBar01"
style="?android:attr/progressBarStyleSmall"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="right|center_vertical"
android:layout_marginRight="4dp" />
</FrameLayout>
<FrameLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="16dp" >
<EditText
android:id="@+id/EditText1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingRight="24dp"
android:text="http://example.com"
android:textAppearance="?android:attr/textAppearanceSmall"
android:textSize="12dp" />
<ProgressBar
android:id="@+id/progressBar1"
style="?android:attr/progressBarStyleSmall"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="right|center_vertical"
android:layout_marginRight="4dp" />
</FrameLayout>
FrameLayout
dentro de FrameLayout
:
<FrameLayout
android:layout_width="0dp"
android:layout_height="100dp"
android:layout_weight="1">
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/my_info_card"
android:gravity="center"
android:layout_gravity="center"/>
<ProgressBar
android:id="@+id/progress_bar"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
style="@android:style/Widget.ProgressBar.Small"
android:layout_gravity="center"/>
</FrameLayout>
De esta forma, la ProgressBar
aparece sobre TextView
. Seguramente puede ocultar ProgressBar cuando lo desee mediante setVisibility()
. También puede establecer la gravedad de cada diseño por android:layout_gravity
. En el ejemplo anterior, se ve así: