Quelle est l'équivalence Android de UIActionSheet dans le SDK iOS? Je travaille sur un projet React-Native et je dois continuer à utiliser les contrôles natifs dans la mesure du possible. Je ne suis pas tombé sur un paquet npm ou autre utilisant la feuille d'action respective de la partition. Ils semblent tous utiliser une feuille d'action native dans iOS et une maquette javascript de la feuille d'action iOS pour Android (ce qui la rend non native sur Android). Si je peux savoir ce qu'Android montre où iOS affiche une feuille d'actions, je peux utiliser le composant RN Android pour Android et le feuille d'actions pour iOS. J'espère que c'est une question claire.
Nous utilisons BottomSheetDialog
pour effectuer le même travail sous Android. Ce n'est pas exactement la même chose et cela peut nécessiter un peu plus de code pour écrire par rapport à iOS. Mais le résultat final est similaire.
Références:
https://developer.Android.com/reference/Android/support/design/widget/BottomSheetDialog.htmlhttps://medium.com/glucosio-project/15fb8d140295
Pour les feuilles d'action comme dans IOS, vous pouvez utiliser cette bibliothèque
_ {Usage} _
Ajoutez cette dépendance à votre niveau d'application grsadle
dependencies {
compile 'com.baoyz.actionsheet:library:1.1.7'
}
Créer une feuille d'action et afficher
ActionSheet.createBuilder(this, getSupportFragmentManager())
.setCancelButtonTitle("Cancel")
.setOtherButtonTitles("Item1", "Item2", "Item3", "Item4")
.setCancelableOnTouchOutside(true)
.setListener(this).show();
Méthodes
setCancelButtonTitle()
titre du bouton Annuler, (Chaîne)setOtherButtonTitles()
Titre des boutons d'élément , (String [])setCancelableOnTouchOutside()
Touchez l'extérieur pour fermer, (booléen)setListener()
définir un Listener to listen eventshow()
Show ActionSheet
, return ActionSheet
Object , appelez la méthode dismiss()
d'ActionSheet pour fermer.J'avais implémenté une fonctionnalité similaire en utilisant BottomSheetDialog
dans Android.
BottomSheetDialog mBottomDialogNotificationAction;
private void showDialogNotificationAction() {
try {
View sheetView = mActivity.getLayoutInflater().inflate(R.layout.dialog_bottom_notification_action, null);
mBottomDialogNotificationAction = new BottomSheetDialog(mActivity);
mBottomDialogNotificationAction.setContentView(sheetView);
mBottomDialogNotificationAction.show();
// Remove default white color background
FrameLayout bottomSheet = (FrameLayout) mBottomDialogNotificationAction.findViewById(Android.support.design.R.id.design_bottom_sheet);
bottomSheet.setBackground(null);
} catch (Exception e) {
e.printStackTrace();
}
}
dialog_bottom_notification_action.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:orientation="vertical"
Android:padding="10dp">
<LinearLayout
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:background="@drawable/rounded_corner"
Android:orientation="vertical">
<LinearLayout
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:clickable="true"
Android:foreground="?attr/selectableItemBackground"
Android:orientation="vertical"
Android:padding="15dp">
<TextView
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_gravity="center"
Android:text="Apply Leave"
Android:textColor="#1E82FF"
Android:textSize="16sp" />
</LinearLayout>
<View
Android:layout_width="match_parent"
Android:layout_height="0.5dp"
Android:background="#E5E5E5" />
<LinearLayout
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:clickable="true"
Android:foreground="?attr/selectableItemBackground"
Android:orientation="vertical"
Android:padding="15dp">
<TextView
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_gravity="center"
Android:text="Regularisation"
Android:textColor="#1E82FF"
Android:textSize="16sp" />
</LinearLayout>
</LinearLayout>
<LinearLayout
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:layout_marginTop="15dp"
Android:background="@drawable/rounded_corner"
Android:clickable="true"
Android:foreground="?attr/selectableItemBackground"
Android:orientation="vertical"
Android:padding="15dp">
<TextView
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_gravity="center"
Android:text="Close"
Android:textColor="#1E82FF"
Android:textSize="16sp"
Android:textStyle="bold" />
</LinearLayout>
</LinearLayout>
rounded_corner.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:Android="http://schemas.Android.com/apk/res/Android">
<solid Android:color="#ffffff" />
<corners Android:radius="@dimen/size_10dp" />
</shape>