这更像是一个通用的问题,但经过大量的搜索和尝试,我无法理解为什么这么难实现.这是我能找到的最接近的答案,但仍然无法实现.
具体来说,我正在使用RecyclerView和GridLayoutManager.我想要的是平滑滚动的网格布局(如默认的gallary应用程序),没什么特别的,但网格布局管理器的默认实现以"生涩"的方式滚动视图.我试图从上面的链接实现该方法,但没有成功.
我也尝试实现LinearSmoothScroller,但我不确定如何实现computeScrollVectorForPosition方法.关于computeScrollVectorForPosition的Google文档字面上有0个字.
我找到了这个3部分的教程,但它没什么帮助.所以,我想问的是:我们可以在LinearSmoothScroller中实现某种模板代码,还是扩展RecyclerView.SmoothScroller并实现平滑滚动?即使代码依赖于gridlayout中每行的项目数和项目数,也必须有一些方法可以轻松完成.我在这里错过了什么吗?
android smooth-scrolling gridlayoutmanager android-recyclerview
我正在使用recyclerview和GridLayoutManager.我还使用以下代码使第一个项目变大
lLayout.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() {
@Override
public int getSpanSize(int i) {
if (i==0) return 2;
else return 1;
}
});
Run Code Online (Sandbox Code Playgroud)
一切正常,除了一个:位置1处的项目(即大图像中的下一个项目)垂直拉长以匹配大项目的高度.从第3行开始,所有图像都如图所示.
我怎么能摆脱这个?
编辑:经过一番分析
所以问题似乎是大图像水平地采用两个跨度但垂直单跨,因为我强迫我的ImageView是方形的,看起来它也采取了两行,实际上它是一行.由于这个原因,第二个图像看起来很长.
所以现在我的问题是,如何使网格项垂直两个跨度和两个水平跨度?
例如,如果我将useEffect钩子设为useEffect(() => {...},[a,b])。useEffect如果[a,b]之一更改或同时[a,b]都更改,将被解雇吗?
我有一个应用程序,其中清单只允许以下行
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.GET_ACCOUNTS"/>
Run Code Online (Sandbox Code Playgroud)
但在安装应用程序时,Play商店会显示以下权限
身份
使用以下一项或多项:设备上的帐户,配置文件数据
位置
使用设备的位置
照片/媒体/文件
使用以下一项或多项:设备上的文件,如图像,视频或音频,设备的外部存储
既然我没有要求用户位置,我也没有使用它,为什么Play商店会显示这个?
编辑:如何修复
接受的答案和谷歌页面上的链接帮助我解决了这个问题.基本上播放服务使用了位置,所以我只是用service-plus和service-ads替换它们来解决这个问题.希望这将有助于其他一些开发人员.
具体
替换compile 'com.google.android.gms:play-services:7.5.0'
同
compile 'com.google.android.gms:play-services-ads:7.5.0'
compile 'com.google.android.gms:play-services-plus:7.5.0'
Run Code Online (Sandbox Code Playgroud) 如果满足 5 个条件中的任何 3 个,我必须连接两个表并选择行。我当然可以在where子句中组合 AND 和 OR ,但这听起来效率很低。有没有可以做到这一点的功能?伪代码如下。
select * from tableA a,tableB b
where a.id=b.id
and /* if any 3 out of these 5 conditions are met: a.num = b.num, a.cat=b.cat,
a.sun=b.sun, a.mon=b.mon, a.jan=b.jan */
Run Code Online (Sandbox Code Playgroud)