webentwicklung-frage-antwort-db.com.de

Android-Äquivalenz von iOS-ActionSheet

Was ist die Android-Äquivalenz des UIActionSheet im iOS SDK? Ich arbeite an einem React-Native-Projekt und muss nach Möglichkeit native Steuerelemente verwenden. Ich bin nicht auf ein npm-Paket oder ein anderes gestoßen, das das entsprechende Aktionsblatt verwendet. Sie scheinen alle das native Actionsheet in iOS zu verwenden und ein Javascript-Mock des iOS-Actionsheets für Android (wodurch es für Android nicht native ist). Wenn ich weiß, was Android zeigt, wo iOS ein Aktionsblatt anzeigt, kann ich die Android-Komponente RN für Android und das Aktionsblatt für iOS verwenden. Ich hoffe, das ist eine klare Frage.

6
pnizzle

Wir verwenden BottomSheetDialog, um die gleiche Arbeit in Android auszuführen. Nicht genau das Gleiche und erfordert möglicherweise etwas mehr Code zum Schreiben als bei iOS. Das Endergebnis ist jedoch ähnlich. 

Verweise: 

https://developer.Android.com/reference/Android/support/design/widget/BottomSheetDialog.htmlhttps://medium.com/glucosio-projekt/15fb8d140295

6
Yuchen Zhong

Für ActionSheet wie in IOS können Sie Diese Bibliothek verwenden.

Verwendungszweck

Fügen Sie diese Abhängigkeit zu Ihrem App-Level Grsadle hinzu

dependencies {
    compile 'com.baoyz.actionsheet:library:1.1.7'
}

Aktionsblatt erstellen und anzeigen

ActionSheet.createBuilder(this, getSupportFragmentManager())
            .setCancelButtonTitle("Cancel")
            .setOtherButtonTitles("Item1", "Item2", "Item3", "Item4")
            .setCancelableOnTouchOutside(true)
            .setListener(this).show();

Methoden

  • setCancelButtonTitle() Schaltflächentitel abbrechen (String)
  • setOtherButtonTitles() Elementschaltflächen Titel , (String [])
  • setCancelableOnTouchOutside() Außen berühren, um zu schließen (boolean)
  • setListener() hat einen Listener für das Listenereignis festgelegt
  • show() Show ActionSheet, return ActionSheet Object , Aufruf der dismiss()-Methode von ActionSheet zum Schließen.
2
Abhishek Singh

Ich hatte ähnliche Funktionen mit BottomSheetDialog in Android implementiert.

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>

round_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