studio - progress dialog personalizado android
Android: muestra un cuadro de diƔlogo emergente cuando se hace clic en una palabra en particular en un TextView (1)
Creo que necesitarás Spannable Strings
. Además, esta pregunta ayudaría. Crear ClickableSpan
será una buena opción para su problema.
SpannableString stringToSpan = new SpannableString("<your sentence>");
TextView textView = (TextView) findViewById(R.id.<yourTextView ID>);
textView.setText(stringToSpan);
textView.setMovementMethod(LinkMovementMethod.getInstance());
ClickableSpan clickableSpan = new ClickableSpan() {
@Override
public void onClick(View textView) {
//alert box code here
}
};
stringToSpan.setSpan(clickableSpan, <start position of span>,<end position>,Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
}
En mi solicitud, tengo un texto para términos y condiciones.
Al registrarse, usted acepta estar sujeto a nuestros Términos de uso y que ha leído nuestra Política de privacidad.
Se debe poder hacer clic en las palabras Términos de uso y Política de privacidad y mostrar un cuadro de alerta.
Primero intenté dividir las oraciones en cuatro TextView
s:
- Al registrarse, acepta estar obligado por nuestro
- Términos de Uso
- y que has leído nuestra
- Política de privacidad.
Esto funcionó bien, con el siguiente diseño XML:
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/termsandcondtion"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="5dp"
android:layout_marginRight="5dp"
android:orientation="horizontal" >
<TextView
android:id="@+id/terms_1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/terms_1"
android:textColor="#000000"
android:textSize="12dp" />
<TextView
android:id="@+id/terms"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:clickable="true"
android:onClick="showTerms"
android:text="@string/terms_2"
android:textColor="#000000"
android:textSize="12dp" />
<TextView
android:id="@+id/terms_3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/terms_3"
android:textColor="#000000"
android:textSize="12dp" />
<TextView
android:id="@+id/termsofuse"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:clickable="true"
android:onClick="showTermsofUse"
android:text="@string/terms_4"
android:textColor="#000000"
android:textSize="12dp" />
</LinearLayout>
El código para mostrar la ventana emergente es:
WebView wv = new WebView(this);
wv.loadUrl(url);
wv.setWebViewClient(new WebViewClient()
{
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url)
{
view.loadUrl(url);
return true;
}
});
AlertDialog.Builder alert = new AlertDialog.Builder(this);
alert.setTitle("Privacy Policy");
alert.setView(wv);
alert.setNegativeButton("Close", new DialogInterface.OnClickListener()
{
public void onClick(DialogInterface dialog, int id)
{
}
});
alert.show();
El problema es que los cuatro TextView
s no están alineados correctamente entre sí. Esto significa que tengo que usar un TextView
y mostrar un diaplog emergente cuando se hace clic en una palabra en particular (Términos de uso, Política de privacidad) en TextView
.
¿Cuál es la mejor manera de hacer esto?