flipboard / bottomsheet Goto Github PK
View Code? Open in Web Editor NEWAndroid component which presents a dismissible view from the bottom of the screen
License: BSD 3-Clause "New" or "Revised" License
Android component which presents a dismissible view from the bottom of the screen
License: BSD 3-Clause "New" or "Revised" License
Can i use this library in my project?
Why can't you use the BottomSheet as a dialog like class instead of embedding it as part of a layout? If I'm not seeing it. please let me know, but this is far more useful if can use it in that way instead of it having to be put as a wrapper in every layout.
Thanks, I like the features, but don't see why it needs to be done in this fashion.
Expressing brand is important for many apps, so we can help in this department.
The following are possible others, but have explicit specs in the Material Design guidelines:
Steps how to reproduce:
void onClick(View view) {
if (sheetView.isSheetShowing()) {
return;
}
sheetView.showWithSheetView(...);
}
#dismissSheet()
nor by dragging it.To finally dismiss it you have to do:
if (sheetView.isSheetShowing()) {
sheetView.dismissSheet();
} else if (sheetView.getSheetView() != null) {
// Here we go. This should never happen, right?
try {
Method method = BottomSheetLayout.class.getDeclaredMethod(
"setState", BottomSheetLayout.State.class);
method.setAccessible(true);
method.invoke(sheetView, BottomSheetLayout.State.EXPANDED);
sheetView.dismissSheet();
} catch (Exception e) {
throw new RuntimeException(e);
}
}
A sheet that shows a grid of most recent images, and also has two containers for retrieving from the camera or system image picker call.
Default implementation of retrieving images from local (where the user provides some getImage(Uri uri)
implementation) or otherwise implement a provideImage(int position)
interface if they want to source their own content.
After rotate screen , sheet view locates in incorrect position.
The material design spec for bottom sheets states:
When a bottom sheet is displayed, it animates upwards from the bottom edge of the screen. The rest of the screen dims, giving focus to the bottom sheet.
This looks like this:
Right now, this library only dims the content view when the sheet is translating between the "peek" mode and the "expanded" mode. When the sheet is sitting at the bottom of the screen after showWithSheetView()
is called, there is no content view dimming, even with shouldDimContentView
set to true.
I understand that this library was initially created for the Flipboard app, but it would be nice to have the option to have the content view dim according to the spec.
Hello! MenuSheetView isn't showing the icons in grid mode. My code
MenuSheetView menuSheetView =
new MenuSheetView(getActivity(), MenuSheetView.MenuType.LIST, "Create...", new MenuSheetView.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
Toast.makeText(getActivity(), item.getTitle(), Toast.LENGTH_SHORT).show();
if (bottomSheetLayout.isSheetShowing()) {
bottomSheetLayout.dismissSheet();
}
return true;
}
});
menuSheetView.inflateMenu(R.menu.menu_sheet_add_plan);
bottomSheetLayout.showWithSheetView(menuSheetView);
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/plan_type_payment"
android:icon="@drawable/creditcard"
android:title="Payment"/>
<item
android:id="@+id/menu_subheader"
android:title=""
>
<menu>
<item
android:id="@+id/plan_type_plane"
android:icon="@drawable/plane"
android:title="Plane"/>
<item
android:id="@+id/plan_type_train"
android:icon="@drawable/train"
android:title="Train"/>
<item
android:id="@+id/plan_type_car"
android:icon="@drawable/car"
android:title="Car"/>
<item
android:id="@+id/plan_type_bus"
android:icon="@drawable/schooolbus"
android:title="Bus"/>
<item
android:id="@+id/plan_type_taxi"
android:icon="@drawable/taxi"
android:title="Taxi"/>
<item
android:id="@+id/plan_type_cruise"
android:icon="@drawable/cruise"
android:title="Cruise"/>
<item
android:id="@+id/plan_type_sailboat"
android:icon="@drawable/sailboat"
android:title="Sailboat"/>
<item
android:id="@+id/plan_type_bike"
android:icon="@drawable/bike"
android:title="Bike"/>
</menu>
</item>
</menu>
The distinction between a BottomSheet
and a SheetView
is pretty confusing. The way that I understand it is that BottomSheet
is a custom ViewGroup
that wraps an entire screen's layout -- not just the layout of the actual bottom sheet. And a SheetView
is just the view that comes up from the bottom. This is confusing because the SheetView
is the actually the bottom sheet here -- not the BottomSheet
.
Why don't you adopt the convention used with DrawerLayout
and the navigation drawer? Seems like a perfect analogy. The DrawerLayout
wraps the entire screen's layout, while the navigation drawer is just the second child of the DrawerLayout
.
I'm proposing that you rename BottomSheet
to BottomSheetLayout
, and rename the SheetView
(I know this isn't actually a class in the library, but it is what you're calling the actual bottom sheet view) to BottomSheet
.
The internal adapter uses the component labels for the id, as pasted below. This could cause a clash as two applications could give an Activity the same label. It would be safer to hash the componentName instead.
@Override
public long getItemId(int position) {
return activityInfos.get(position).label.hashCode();
}
I am using a layout XML file for my bottom sheet, with a single textview in it.
How do I go about changing the value of the textview?
I tried the following, but it didn't work:
TextView title = (TextView) bottomSheet.findViewById(R.id.sheetTitle);
title.setText(marker.getTitle());
When I run the demo, picker and menu can not be full screen,
HiTestActivity:
protected BottomSheetLayout bottomSheetLayout;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_hi_test);
bottomSheetLayout = (BottomSheetLayout) findViewById(R.id.bottomsheet);
bottomSheetLayout.setPeekOnDismiss(true);
findViewById(R.id.btn_hi_test).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
showView();
}
});
}
private void showView() {
HiTestView mHiTestView = new HiTestView(this);
bottomSheetLayout.showWithSheetView(mHiTestView);
}
HiTestView
public HiTestView(Context context) {
super(context);
inflate(getContext(), R.layout.hi_sheet_view, this);
}
hi_sheet_view
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@android:color/white">
<TextView
android:id="@+id/title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="24dp"
android:layout_marginLeft="24dp"
android:layout_marginRight="24dp"
android:layout_marginStart="24dp"
android:gravity="center_vertical"
android:text="hi test"
android:textColor="@color/text_gray"
android:textSize="16sp" />
</LinearLayout>
App crashes when calling BottomSheet twice. So is it possible to prevent such behaviour?
Google updated the spec today, and there's a fair number of additions we can design against in our commons components and core library as well.
http://www.google.com/design/spec/components/bottom-sheets.html#bottom-sheets-specs
Hi , how can i increase the view which appears on clicking share so that it can cover maximum area till top . I want only 30-40 dp gap when it appears and when it is scrolled then it is fine.
So can i guide me how to achieve this?
Actually many of the apps have used this feature and this library is very close it. Like airbnb . This app has listview which comes from bottom and user has the ability to scroll it as much as he can. It just leaves a space from top(so that the view behind it can be seen). The rest of the featue i.e full view on scroll issame as you have done
I'm using a RecyclerView inside the bottom sheet in several places in my app. I've noticed that sometimes the sheet intercepts the touch event to scroll the RecyclerView back to the top and moves the sheet instead. If I start the scroll in the other direction first it works correctly.
I cannot find any documentation on how to use the peek feature?
I'd like my sheet to peek, then expand when tapped or dragged up.
Hi all,
I've found the following potential bug when creating a custom Activity for the PickerActivity.class from bottomsheet-sample.
I have the following basic implementation for the custom functionality:
Drawable scheduledGreetingDrawable = ResourcesCompat.getDrawable(getResources(), R.mipmap.ic_launcher, null);
IntentPickerSheetView.ActivityInfo scheduledGreetingInfo =
new IntentPickerSheetView.ActivityInfo(scheduledGreetingDrawable, getString(R.string.scheduled), CreateScheduledGreetingActivity.class);
intentPickerSheet.setMixins(Collections.singletonList(scheduledGreetingInfo));
Now CreateScheduledGreetingActivity
is in the following package: com.deolabs.greetingsbook.activities
I inspect the concreteIntent from void onIntentPicked(IntentPickerSheetView.ActivityInfo activityInfo)
:
Intent concreteIntent = activityInfo.getConcreteIntent(shareIntent);
This issue is that the value from mComponent->mPackage is com.deolabs.greetingsbook.activities
A normal intent has the value of mPackage com.deolabs.greetingsbook
and works fine.
Basically if I move my activity in the the `com.deolabs.greetings' root package it works fine. Should'nt I be able to invoke activities from any custom package from the root package ? The bug is fixed if the activity class is placed in the root package (com.deolabs.greetings). If I put it in (com.deolabs.greetings.activities) it crashes.
The Exception that is thrown is:
Unable to find explicit activity class {com.deolabs.greetingsbook.activities/com.deolabs.greetingsbook.activities.CreateScheduledGreetingActivity}; have you declared this activity in your AndroidManifest.xml?
Thanks.
Hello, How can I easily centre the peek sheet on button click.
I am trying to implement bottomsheet over a mapView. I peek the bottomsheet when the user clicks on markers on the map. But the user should be able to:
P.S I would gladly like to help if anyone can guide me a little.
Hello,
I'm using the bottom sheet to display secondary actions for the items of a list. The sheet is shown when an item is long pressed.
The problem is, after the long press has been registered on the child view, if I don't lift the finger and start move it around the sheet intercepts those movement events and starts moving down.
Could a possible solution be intercepting touch events from the sheet layout only starting from a DOWN event?
public boolean onInterceptTouchEvent(MotionEvent ev) {
return ev.getActionMasked() == MotionEvent.ACTION_DOWN && isSheetShowing();
}
Thanks for the great library!
If BottomSheetLayout doesn't have any children it will throw an exception when trying to show a sheet.
For now the work around is to throw in an empty view like below.
<com.flipboard.bottomsheet.BottomSheetLayout
android:id="@+id/bottomsheet"
android:fitsSystemWindows="true"
android:layout_width="match_parent"
android:layout_height="match_parent">
<View
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</com.flipboard.bottomsheet.BottomSheetLayout>
Hi!
How can I show the bottomsheet from a fragment?
Hello
I have the following code that I inflate for my bottom sheet:
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Upload a picture"
android:layout_margin="16dp"
/>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Option 1"
android:layout_marginBottom="16dp"
android:layout_marginLeft="16dp"
/>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Option 2"
android:layout_marginBottom="16dp"
android:layout_marginLeft="16dp"
/>
It inflates fine - but the problem is that if you drag the bottomsheet to the top of the screen, some of it hides behind the statusBar.
Before I drag it to the top (peekSheet):
After dragging it to the top - you can see that the "Upload a picture" text is hidden somewhat :
After rotate screen , sheet view locates in incorrect position.
Target Device : SamSung Tab N8000.
AndroidManifest.xml : <activity android:configChanges="keyboardHidden|orientation|screenSize"
The first 3 pictures are in normal state, and the last 3 pictures are what happens after rotate screen.
==============================Before rotate screen=================================
==============================After rotate screen =================================
device-01-after-rotate
java.lang.IndexOutOfBoundsException: Inconsistency detected. Invalid view holder adapter positionViewHolder{35dc8731 position=1 id=-1, oldPos=-1, pLpos:-1 scrap tmpDetached no parent}
at android.support.v7.widget.RecyclerView$Recycler.validateViewHolderForOffsetPosition(SourceFile:4349)
at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(SourceFile:4480)
at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(SourceFile:4461)
at android.support.v7.widget.LinearLayoutManager$LayoutState.next(SourceFile:1962)
at android.support.v7.widget.LinearLayoutManager.layoutChunk(SourceFile:1371)
at android.support.v7.widget.LinearLayoutManager.fill(SourceFile:1334)
at android.support.v7.widget.LinearLayoutManager.onLayoutChildren(SourceFile:563)
at android.support.v7.widget.RecyclerView.dispatchLayout(SourceFile:2847)
at android.support.v7.widget.RecyclerView.onLayout(SourceFile:3145)
at android.view.View.layout(View.java:15614)
at android.view.ViewGroup.layout(ViewGroup.java:4968)
at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1703)
at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1557)
at android.widget.LinearLayout.onLayout(LinearLayout.java:1466)
at android.view.View.layout(View.java:15614)
at android.view.ViewGroup.layout(ViewGroup.java:4968)
at android.support.v4.view.ViewPager.onLayout(SourceFile:1627)
at android.view.View.layout(View.java:15614)
at android.view.ViewGroup.layout(ViewGroup.java:4968)
at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1703)
at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1557)
at android.widget.LinearLayout.onLayout(LinearLayout.java:1466)
at android.view.View.layout(View.java:15614)
at android.view.ViewGroup.layout(ViewGroup.java:4968)
at android.support.design.widget.CoordinatorLayout.layoutChild(SourceFile:1034)
at android.support.design.widget.CoordinatorLayout.onLayoutChild(SourceFile:744)
at android.support.design.widget.CoordinatorLayout.onLayout(SourceFile:758)
at android.view.View.layout(View.java:15614)
at android.view.ViewGroup.layout(ViewGroup.java:4968)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:573)
at android.widget.FrameLayout.onLayout(FrameLayout.java:508)
at com.flipboard.bottomsheet.BottomSheetLayout.onLayout(SourceFile:205)
at android.view.View.layout(View.java:15614)
at android.view.ViewGroup.layout(ViewGroup.java:4968)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:573)
at android.widget.FrameLayout.onLayout(FrameLayout.java:508)
at android.view.View.layout(View.java:15614)
at android.view.ViewGroup.layout(ViewGroup.java:4968)
at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1703)
at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1557)
at android.widget.LinearLayout.onLayout(LinearLayout.java:1466)
at android.view.View.layout(View.java:15614)
at android.view.ViewGroup.layout(ViewGroup.java:4968)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:573)
at android.widget.FrameLayout.onLayout(FrameLayout.java:508)
at android.view.View.layout(View.java:15614)
at android.view.ViewGroup.layout(ViewGroup.java:4968)
at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1703)
at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1557)
at android.widget.LinearLayout.onLayout(LinearLayout.java:1466)
at android.view.View.layout(View.java:15614)
at android.view.ViewGroup.layout(ViewGroup.java:4968)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:573)
at android.widget.FrameLayout.onLayout(FrameLayout.java:508)
at android.view.View.layout(View.java:15614)
at android.view.ViewGroup.layout(ViewGroup.java:4968)
at android.view.ViewRootImpl.performLayout(ViewRootImpl.java:2102)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1859)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1077)
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:5884)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:767)
at android.view.Choreographer.doCallbacks(Choreographer.java:580)
at android.view.Choreographer.doFrame(Choreographer.java:550)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:753)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5312)
at java.lang.reflect.Method.invoke(Method.java)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:901)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:696)
Hey,
I attached a onClickListener on the BottomSheet to let it disappear, but nothing happens, when I click/tap on it.
As a comparison, the onTouchListener on it works great, but I can't drag the BottomSheet using it.
Also setting a onClickListener on the containing View is not a solution, because it's not filling the whole screen.
Here a code snippet:
bottomSheet = (BottomSheetLayout) findViewById(R.id.bottomsheet);
bottomSheet.setShouldDimContentView(false);
gifView = LayoutInflater.from(this).inflate(R.layout.gif_animation_view, bottomSheet, false);
bottomSheet.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
bottomSheet.dismissSheet();
Log.i(INFO_LOG_99, "dismissing sheet");
}
});
I can put a invisible view filling the whole BottomSheet and adding a onClickListener on it as a workaround, but I'm just curios why it's not working directly on the BottomSheet.
see the recording:
https://www.youtube.com/watch?v=py30LHdFwpM&feature=youtu.be
According to the material design guidlines the sheet should have a dismiss button in the title when it's expanded. However, most (all?) of google's implementation don't have this button. Not sure if it's worth implementing, just thought I'd bring it up.
This commons component should take a fragment and show it in the bottomsheet.
I'd expect it to work like the navigation drawer layout.
how to change background color of the sheet?
and... is there any way to change the menu items typeface (font) when inflating a menu?
thanks...
I'm using the MenuSheetView
, however I only have about 5 items that I need to show. I don't like how the 3 items are visible when peaked, but you have to drag it up to see the other 2 options.
Is it / could it be possible to adjust the peek height, either so that a certain number of menu items are visible, or so that the peek
state is disabled, and the menu goes from collapsed, straight to expanded.
Thanks.
Util in commons has some strange visibility. It is a public class but all of its methods are package private. Perhaps it should be package private as well or set the methods to to public if you intend other devs to use the methods to make sheets.
Also the Constructor should be made private and throw an AssertException.
In the wiki on the main page and in this blog post you have presented the following code regarding the use of IntentPickerSheetView:
IntentPickerSheetView intentPickerSheet = new IntentPickerSheetView(MainActivity.this, shareIntent, "Share with...", new IntentPickerSheetView.OnIntentPickedListener() {
@Override
public void onIntentPicked(Intent intent) {
bottomSheet.dismissSheet();
startActivity(intent);
}
});
With the latest update the onIntentPicked
doesn't have Intent
as parameter, instead it has IntentPickerSheetView.ActivityInfo
. With that being said, the example should be modified in order to work properly. I have managed to do that in the following manner:
IntentPickerSheetView intentPickerSheetView = new IntentPickerSheetView(MainActivity.this, shareIntent, "Share via...", new IntentPickerSheetView.OnIntentPickedListener() {
@Override
public void onIntentPicked(IntentPickerSheetView.ActivityInfo activityInfo) {
bottomSheet.dismissSheet();
startActivity(activityInfo.getConcreteIntent(shareIntent));
}
});
I realise this may be more of a design issue on my part, but would it be possible to add the ability to swap sheets without having to dismiss and re-open?
I have a menu sheet with a list of options, one option is to upload an image, which is picked via the new image sheet, therefore it would be nice to show (and optionally animate via a slide) the new sheet immediately.
Thanks.
A sheet that maintains a ViewPager
and TabLayout
and accepts a PagerAdapter
to show content.
Should have a divider/elevation of some sort on the tab bar to distringuish it from the content below.
Could also use a Toolbar
or just simple icons (with circular ripples) approach instead of TabLayout
So far, we've been using ListView
and GridView
for everything, which has come with its fair share of problems. They're less flexible, less performant, and have forced us to dance around some bugs as well. I propose we switch to RecyclerView instead.
Pros
Cons
Other things to consider
With its added flexibility, we should do due diligence to make sure the library can allow for users to hook into this fairly easily. I'm not familiar enough with RecyclerView to know if that would problematic, or if it's even a problem at all. Just something to keep in mind.
@markrietveld @st028 @emilsjolander thoughts?
Such as
selector for grid/list item,
grid padding,
progress bar while loading packages,
image picker infinite loading,
dim,
grid/list hiding scrollbar...
Hello! We're enjoying a lot using the library. We're currently using it in a few parts of the app and we want to use it one more time. Just let me know if it's even possible to do what we want to do:
In the image at the left we have already a view in the bottom, we want that when user tap in the FAB expand with a bottom sheet to get the information in the image at the right.
We've tried several things:
How would you suggest to do this?
Thanks a million (for the library and reading this ;) )
First, great lib. Thanks.
I think it would be great to allow peeked content to scroll. Similar to the behavior when expanded, when you hit the end of the scrollable, then it pulls open to an expanded view. Definately as a state switch, because it's more of an edge case.
Also, to add to this, I think it would be super cool to define a second sheet that hangs below the first (or just wherever you want) that animates in as you move from peeked to expanded. Could be cool.
I am trying to use MenuSheetView in my app, but the class is not included in the project when gradle downaload the classes.
Because good software engineers write tests.
Would be good to use Travis-CI as well
Isn't this bottom sheet missing the elevation? As defined here
Been thinking there might be some use cases where one would want to add multiple, such as coloring the status bar when it's expanded.
I'm wrapping BottomSheetLayout around a LinearLayout that contains a RecyclerView (which is populated with RelativeLayouts). To test it, I'm calling
BottomSheetLayout bottomSheet = (BottomSheetLayout) v.findViewById(R.id.bottomsheet);
bottomSheet.showWithSheetView(inflater.inflate(R.layout.fragment_layout, bottomSheet, false));
at the end of the fragment's onCreateView(), after the recyclerview has already been set up.
However, this ends up breaking the RecyclerView, as any touch input causes this stack trace:
java.lang.NullPointerException: Attempt to invoke virtual method 'boolean android.support.v7.widget.RecyclerView$LayoutManager.canScrollVertically()' on a null object reference
at android.support.v7.widget.RecyclerView.computeVerticalScrollOffset(RecyclerView.java:1540)
at android.view.View.canScrollVertically(View.java:12835)
at android.support.v4.view.ViewCompatICS.canScrollVertically(ViewCompatICS.java:35)
at android.support.v4.view.ViewCompat$ICSViewCompatImpl.canScrollVertically(ViewCompat.java:1161)
at android.support.v4.view.ViewCompat.canScrollVertically(ViewCompat.java:1575)
at android.support.v4.widget.SwipeRefreshLayout.canChildScrollUp(SwipeRefreshLayout.java:643)
at android.support.v4.widget.SwipeRefreshLayout.onInterceptTouchEvent(SwipeRefreshLayout.java:657)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1960)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2405)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2049)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2405)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2049)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2405)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2049)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2405)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2049)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2405)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2049)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2405)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2049)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2405)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2049)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2405)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2049)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2405)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2049)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2405)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2049)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2405)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2049)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2405)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2049)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2405)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2049)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2405)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2049)
at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:2369)
at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1719)
at android.app.Activity.dispatchTouchEvent(Activity.java:2742)
at android.support.v7.internal.view.WindowCallbackWrapper.dispatchTouchEvent(WindowCallbackWrapper.java:60)
at android.support.v7.internal.view.WindowCallbackWrapper.dispatchTouchEvent(WindowCallbackWrapper.java:60)
at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:2330)
at android.view.View.dispatchPointerEvent(View.java:8666)
at android.view.ViewRootImpl$ViewPostImeInputStage.processPointerEvent(ViewRootImpl.java:4123)
at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:3989)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3544)
at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3597)
at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3563)
at android.view.ViewRootImpl$AsyncInputStage.forward
Here's a screenshot of what happens:
The grid items for the IntentPickerSheetView are not visible (and as far as I can tell part not part of the view hierarchy) when running on older android devices.
I am using bottomsheet version 1.3.0. I tried this on android 4.2 and 4.1 devices. I have an example project here https://github.com/mknudsen/bottomsheet-android-4.2-issue
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.