web-dev-qa-db-fra.com

Équivalence Android de l'Action Action iOS

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.

6
pnizzle

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

6
Yuchen Zhong

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 event
  • show() Show ActionSheet, return ActionSheet Object , appelez la méthode dismiss() d'ActionSheet pour fermer.
2
Abhishek Singh

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>

 enter image description here

1
Nayan Dabhi