Check if all requirements are fulfilled otherwise the issue will be closed without any comment
What is expected? Box does not move, so you can easliy seclect one of the menu items e.g Edit lable, edit tags, remove
What does happen instead?
Once you click the 3 dots the menu will jump up to the top
Paste your logcat here (or use something like Pastbin for long logs)
I can't reproduce this problem on my phone and I can't open your video, so I can't really debug this ...
@RichyHBM can you try and reproduce this issue?
updated the URL with the video
This is indeed very strange, but I have been unable to reproduce it on 3 different phones (and one Android Emulator) I tried this on...
Seems like I will have to do some more research on this.
Happened on my old S8+ if that helps; with around 46 2FA codes.
I just started using andOTP and also experienced this issue on my Honor 8 (Android 8.0.0).
After playing around I found a way to reproduce it. You just have to add enough entries to fill your screen and have [atleast?] one entry with a non default period (!=30s). This also "works" on the Android Emulator.
logcat:
2020-01-01 18:46:15.522 21036-21036/org.shadowice.flocke.andotp.dev D/skia: --- SkAndroidCodec::NewFromStream returned null
2020-01-01 18:46:15.526 21036-21036/org.shadowice.flocke.andotp.dev W/StaticLayout: maxLineHeight should not be -1. maxLines:1 lineCount:1
2020-01-01 18:46:15.540 21036-21036/org.shadowice.flocke.andotp.dev D/skia: --- SkAndroidCodec::NewFromStream returned null
2020-01-01 18:46:16.533 21036-21036/org.shadowice.flocke.andotp.dev D/skia: --- SkAndroidCodec::NewFromStream returned null
2020-01-01 18:46:16.539 21036-21036/org.shadowice.flocke.andotp.dev W/StaticLayout: maxLineHeight should not be -1. maxLines:1 lineCount:1
2020-01-01 18:46:16.543 21036-21036/org.shadowice.flocke.andotp.dev D/skia: --- SkAndroidCodec::NewFromStream returned null
2020-01-01 18:46:16.548 21036-21036/org.shadowice.flocke.andotp.dev W/StaticLayout: maxLineHeight should not be -1. maxLines:1 lineCount:1
2020-01-01 18:46:16.566 21036-21036/org.shadowice.flocke.andotp.dev D/skia: --- SkAndroidCodec::NewFromStream returned null
2020-01-01 18:46:16.573 21036-21036/org.shadowice.flocke.andotp.dev D/skia: --- SkAndroidCodec::NewFromStream returned null
2020-01-01 18:46:17.525 21036-21036/org.shadowice.flocke.andotp.dev D/skia: --- SkAndroidCodec::NewFromStream returned null
EDIT:
Popup menu moves when notifyDataSetChanged() is called (https://github.com/andOTP/andOTP/blob/7c34318c407c4677d3afdf27bdeb998244759720/app/src/main/java/org/shadowice/flocke/andotp/View/EntriesCardAdapter.java#L174-L186) which happens more frequently when e.hasNonDefaultPeriod() is true, I guess?
I have that issue on my phone as well. Menu jumps down one step, then jumps up one step every second until it reaches the top. I also have enough entries to fill the screen, and one non-standard entry (Twitch).
Also, I can confirm that when I remove the Twitch entry from andOTP, the error is gone. Tested with another dummy entry, the problem is caused by the non-standard time of 10s instead of 30s, not by the different length.
Phone has MIUI 11.0.3.0 (= Android 10), AndOTP version 0.6.3.1-play. Pretty annoying and I've almost deleted entries multiple times.
Other than that andOTP is a great app and I hope this gets fixed soon.
The confirmation that it happens because of the non-standard time in the entry is a lot of help. Now I at least have a starting point for my debugging. Thanks a lot @marvinlehmann and @Leseratte10 !
Just coming here to report that this is still an issue in version 0.7.1.1-play.
I discovered the bug under similar circumstances.
I'm on an older device: LG V20
Android 8
Yeah, I was able to reproduce this with a test entry with a longer timeout now as well.
This seems to be an artifact that happens when the screen gets redrawn because of the timeout bar advancing while the menu is open.
This could be troublesome to fix, I will look into it. Maybe as a first step I could temporarily disable the screen/timeout bar refresh while the menu is open.
Try to set holder.setIsRecyclable(false); in public void onBindViewHolder(@NonNull DeviceViewHolder holder, int position). This worked for me in another project.
Most helpful comment
The confirmation that it happens because of the non-standard time in the entry is a lot of help. Now I at least have a starting point for my debugging. Thanks a lot @marvinlehmann and @Leseratte10 !