- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我是 android 的新手,我在 the official android site 上遇到了这个教程。关于如何创建图像的 GridView
。我使用 kotlin 作为首选语言。在扩展 BaseAdapter
的适配器类中,我试图按照教程中的指示设置 ImageView 布局参数,但我收到一条错误消息,指出 GridView.LayoutParams
是未解析的引用。这是该类的完整代码:
class ImageAdapter(val context: Context) : BaseAdapter() {
// references to our images
val items: IntArray = intArrayOf(R.drawable.cat, R.drawable.daft_punk, R.drawable.gun, R.drawable.harvestors, R.drawable.intel, R.drawable.maserati, R.drawable.porsche, R.drawable.serveroom, R.drawable.spiderman, R.drawable.watch_dog)
override fun getItem(p0: Int): Any {
TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
}
override fun getItemId(p0: Int): Long {
return 0
}
override fun getCount(): Int {
return items.size
}
// create a new ImageView for each item referenced by the Adapter
override fun getView(p0: Int, p1: View?, p2: ViewGroup?): View {
var imageView: ImageView
if (p1 == null) {
// if it's not recycled, initialize some attributes
imageView= ImageView(context)
imageView.layoutParams= GridView.LayoutParams(85,85)
imageView.scaleType = ImageView.ScaleType.CENTER_CROP
imageView.setPadding(8, 8, 8, 8)
} else {
imageView=p1 as ImageView
}
imageView.setImageResource(items[p0])
return imageView
}
}
错误出在 getView
方法中的 imageView.layoutParams=GridView.LayoutParams(85,85)
行。 LayoutParams
为红色,表示错误,当我将鼠标悬停在其上时,我收到消息:
Unresolved reference: LayoutParams
如何成功设置这些LayoutParams
?因为没有它们,GridView
中的图像将以全高显示,我需要一个小图像,就像图库应用在我们的手机中显示它们一样。
当我将 imageView.layoutParams=GridView.LayoutParams(85,85)
替换为 imageView.layoutParams=AbsListView.LayoutParams(85,85)
时,我得到了一个javaOutOfMemory 错误。以下是完整的堆栈跟踪:
08-16 06:58:11.412 4543-4543/gallerie.classmite.com.imageviewer E/dalvikvm-heap: Out of memory on a 18662416-byte allocation.
08-16 06:58:11.431 4543-4543/gallerie.classmite.com.imageviewer E/AndroidRuntime: FATAL EXCEPTION: main
Process: gallerie.classmite.com.imageviewer, PID: 4543 java.lang.OutOfMemoryError
at android.graphics.BitmapFactory.nativeDecodeAsset(Native Method)
at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:609
at android.graphics.BitmapFactory.decodeResourceStream(BitmapFactory.java:444)
at android.graphics.drawable.Drawable.createFromResourceStream(Drawable.java:840)
at android.content.res.Resources.loadDrawable(Resources.java:2166)
at android.content.res.Resources.getDrawable(Resources.java:710)
at android.widget.ImageView.resolveUri(ImageView.java:638)
at android.widget.ImageView.setImageResource(ImageView.java:367)
at gallerie.classmite.com.imageviewer.ImageAdapter.getView(ImageAdapter.kt:32)
at android.widget.AbsListView.obtainView(AbsListView.java:2372)
at android.widget.GridView.makeAndAddView(GridView.java:1345)
at android.widget.GridView.makeRow(GridView.java:345)
at android.widget.GridView.fillDown(GridView.java:287)
at android.widget.GridView.fillFromTop(GridView.java:421)
at android.widget.GridView.layoutChildren(GridView.java:1233)
at android.widget.AbsListView.onLayout(AbsListView.java:2166)
at android.view.View.layout(View.java:15127)
at android.view.ViewGroup.layout(ViewGroup.java:4862)
at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1888)
at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1742)
at android.widget.LinearLayout.onLayout(LinearLayout.java:1651)
at android.view.View.layout(View.java:15127)
at android.view.ViewGroup.layout(ViewGroup.java:4862)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:515)
at android.widget.FrameLayout.onLayout(FrameLayout.java:450)
at android.view.View.layout(View.java:15127)
at android.view.ViewGroup.layout(ViewGroup.java:4862)
at com.android.internal.widget.ActionBarOverlayLayout.onLayout(ActionBarOverlayLayout.java:374)
at android.view.View.layout(View.java:15127)
at android.view.ViewGroup.layout(ViewGroup.java:4862)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:515)
at android.widget.FrameLayout.onLayout(FrameLayout.java:450)
at android.view.View.layout(View.java:15127)
at android.view.ViewGroup.layout(ViewGroup.java:4862)
at android.view.ViewRootImpl.performLayout(ViewRootImpl.java:2315)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2021)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1189)
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6221)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:788)
at android.view.Choreographer.doCallbacks(Choreographer.java:591)
at android.view.Choreographer.doFrame(Choreographer.java:560)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:774)
at android.os.Handler.handleCallback(Handler.java:808)
at android.os.Handler.dispatchMessage(Handler.java:103)
at android.os.Looper.loop(Looper.java:193)
at android.app.ActivityThread.main(ActivityThread.java:5315)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:829)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:645)
at dalvik.system.NativeStart.main(Native Method)
仅当我在手机上运行该应用程序时出现此错误,但当我在模拟器中运行该应用程序时,在我进行上述替换后它可以正常运行。
最佳答案
你可以试试这个:
imageView.layoutParams = AbsListView.LayoutParams(85, 85)
AbsListView.LayoutParams
在 GridView
中用于检索 child 的 LayoutParams
。
由于静态成员可以被子类继承in Java .当你调用GridView.LayoutParams
时,它实际上是AbsListView.LayoutParams
。但是,在 Kotlin 中,您不能以同样的方式进行。在子类之外,只能使用父类(super class)的名称来引用父类(super class)的伴生对象的成员。
OutOfMemory
错误表示您正在将大图像加载到 ImageView
。为了防止这种情况,您必须在显示之前缩小图像,引用这个 tutorial .你也可以使用一些图像加载框架,例如 Glide , 以显示您的图像。
推荐阅读:Strange out of memory issue while loading an image to a Bitmap object
关于android - 如何在 Android 中的 GridView 内的 imageView 上设置布局参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45703751/
这个问题已经有答案了: Is there any way to accept only numeric values in a JTextField? (20 个回答) It's possible i
我使用戴尔 XPS M1710。笔记本电脑的盖子、侧面扬声器和前置扬声器都有灯(3 组灯可以单独调节)和鼠标垫下方的灯。在 BIOS 中,我可以更改这些灯的颜色,至少是每个组。另外,我可以在鼠标垫下打
我知道我可以使用 在 iOS 5 中打开设置应用 [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"prefs://"
我有一个 Django 应用程序,我正在尝试为其设置文档。目录结构如下: - doc - project | - manage.py 我已经设置了路径以便 Sphinx 可以看到东西,但是当我尝试使用
我正在使用 768mb ram 运行 centos 5.5。我一直在日志中获取 server reached MaxClients setting, consider raising the MaxC
我在具有以下配置的服务器内运行了 Drupal 安装: StartServers 5 MinSpareServers 5 MaxSpareServers 15 MaxClien
是否可以使用 Microsoft.Web.Administration 包为给定的 location 配置 asp 设置? 我想以编程方式将以下部分添加到本地 IIS applicationHost.
我一直在阅读为 kube-proxy 提供参数的文档,但没有解释应该如何使用这些参数。我使用 az aks create 创建我的集群使用 azure-cli 程序,然后我获得凭据并使用 kubect
我想知道与在 PHP 中使用 setcookie() 函数相比,在客户端通过 JavaScript 设置一些 cookie 是否有任何明显的优势?我能想到的唯一原因是减少一些网络流量(第一次)。但不是
我有一个按钮可以将 body class 设置为 .blackout 我正在使用 js-cookie设置cookie,下面的代码与我的按钮相关联。 $('#boToggle').on('click'
我有一堆自定义的 HTML div。我将其中的 3 存储在具有 slide 类的 div 中。然后,我使用该幻灯片类调用 slick 函数并应用如下设置: $('.slide').slick({
我正在创建一个应该在 Windows 8(桌面)上运行的应用 我需要: 允许用户使用我的应用启动“文件历史记录”。我需要找到打开“文件历史记录”的命令行。 我需要能够显示“文件历史记录”的当前设置。
我刚买了一台新的 MacBook Pro,并尝试在系统中设置 RVM。我安装了 RVM 并将默认设置为 ➜ rvm list default Default Ruby (for new shells)
由于有关 Firestore 中时间戳行为即将发生变化的警告,我正在尝试更改我的应用的初始化代码。 The behavior for Date objects stored in Firestore
在 ICS 中,网络 -> 数据使用设置屏幕中现在有“限制后台数据”设置。 有没有办法以编程方式为我的应用程序设置“限制后台数据”? 或 有没有办法为我的应用程序调出具有选项的“数据使用”设置? 最佳
我正在尝试使用 NextJS 应用程序设置 Jest,目前在 jest.config.js : module.exports = { testPathIgnorePatterns: ["/.n
我最近升级到 FlashDevelop 4,这当然已经将我之前的所有设置恢复到原来的状态。 我遇到的问题是我无法在新设置窗口的哪个位置找到关闭它在方括号、大括号等之前插入的自动空格的选项。 即它会自动
有没有办法以编程方式访问 iPhone/iPod touch 设置? 谢谢。比兰奇 最佳答案 大多数用户设置可以通过读取存储在 /User/Library/Preferences/ 中的属性列表来访问
删除某些值时,我需要选择哪些设置来维护有序队列。我创建了带有自动增量和主键的 id 的表。当我第一次插入值时,没问题。就像 1,2,3,4,5... 当删除某些值时,顺序会发生变化,例如 1,5,3.
我正在尝试设置示例 Symfony2 项目,如此处所示 http://symfony.com/doc/current/quick_tour/the_big_picture.html 在访问 confi
我是一名优秀的程序员,十分优秀!