问题标签 [custom-view]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1419 浏览

android - 扩展相对布局

这是我在创建具有可自定义过度滚动的 ListView 方面所做的更多工作。

我想创建一个扩展 RelativeLayout 但添加子视图的自定义元素根本无法正常工作。代码看起来正确,但视图看起来有点疯狂。

奇怪的是,这给出了这个(我已将相对布局设置为黑色以显示边缘和发光):

如您所见,顶部边缘漂浮在不知名的地方,底部发光已缩小到很小的尺寸......到底是什么?

0 投票
2 回答
1250 浏览

android - 当嵌入到 Horizo​​ntalScrollView 中时,我的自定义视图不可见

我知道很多人都遇到过类似的问题,但我找不到解决方案。我创建了一个扩展 SurfaceView 的自定义视图。当我使用时,此视图非常有效:

但是我希望它嵌入到 Horizo​​ntalScrollView 中。如果我用 xml 尝试这个:

然后我得到一个致命的异常,我的应用程序关闭。

如果我尝试以编程方式解决此问题:

然后屏幕就黑了。我还尝试了上面显示的代码的许多变体,但没有一个成功。我哪里错了?

0 投票
1 回答
77 浏览

objective-c - 多次重复自定义视图

我真的几乎不知道如何才能开始这样做,所以我将对其进行解释。我有一个自定义视图,其中包含另一个较小的视图。这两个视图完全在 IB 中构建,主视图有几个输入字段,并且只会调整大小(我认为我已经非常失望了)。第二个出现在主输入设置完成后。需要明确的是,第一个只要求一些输入,一旦有了它们,第二个视图就会出现并开始使用这些输入值。我想做的是能够先输入一些输入,然后出现第二个视图,然后输入一些其他输入,然后出现另一个视图(看起来与第一个视图相同),而是使用新的输入值。

我想知道的是我是否必须在 IB 中多次制作相同的自定义视图,或者(我认为可能如何完成)使第二个视图成为一个单独的类,并为每个新创建一个新对象输入,并从另一个类控制它们在主视图中的位置。如果这是它的完成方式,我需要一些帮助,因为我真的不知道如何以编程方式创建一个新对象,或者做任何这些事情。程序必须了解视图是完全独立的,并且每个命令(例如取消)只能应用于其中一个视图。

我意识到这非常广泛,但我对这个特定问题没有任何经验。我基本上有一个自定义视图,它需要一些输入,并且希望每次发送输入时视图都会重复,但每个视图都相互独立。

谢谢您的帮助。

0 投票
1 回答
200 浏览

java - 创建自定义视图:如何扩展类并访问基类的私有成员变量?

作为练习,我正在尝试扩展ImageButton以添加一些我认为有用的功能。其中一个尤其是卓尔影子。我已经用这个撞到了众所周知的墙。

在我看来,扩展类BitmapDrawable是必要的。此类包含一个Paint用于将位图绘制到屏幕的对象。如果我可以访问这个Paint对象......我所要做的就是调用它的setShadowLayer()方法......但是,唉,它是private. 有一种public方法getPaint()可以返回绘制对象,但除非有相应的setPaint()方法,否则对其进行任何修改都是无用的。(没有。)

目前,我的思考过程如下所示......

  1. 创建ShadowBitmapDrawableextends BitmapDrawable
  2. 在这个类中,以某种方式用'方法改变BitmapDrawable'Paint对象。PaintsetShadowLayer()
  3. 在我的自定义ImageButton类中,调用setImageDrawable(Drawable d)并将我的ShadowBitmapDrawable对象传递给它。

第2步是路障。我能做些什么来改变BitmapDrawable's 的Paint对象?请注意,我添加我的思考过程只是作为我在这个问题中所处位置的一个指标。我愿意接受其他建议。

以下是一些参考资料:



PS我有一种不好的感觉,我已经知道我会得到的答案,而且我不会喜欢它。想我还是会发布这个问题,并希望最好。

0 投票
1 回答
130 浏览

objective-c - iOS - 自定义视图崩溃

项目因此错误而崩溃。

在委托的这个方法中

欢迎提出问题,但如果您想查看代码,有问题的视图控制器文件在这里。

0 投票
5 回答
1854 浏览

android - 处理昂贵的视图高度计算的最佳实践?

我一直遇到自定义视图的大小和布局问题,我想知道是否有人可以提出“最佳实践”方法。问题如下。想象一个自定义视图,其中内容所需的高度取决于视图的宽度(类似于多行 TextView)。(显然,这只适用于高度不是由布局参数固定的情况。)问题在于,对于给定的宽度,在这些自定义视图中计算内容高度相当昂贵。特别是,在 UI 线程上计算成本太高,因此在某些时候需要启动工作线程来计算布局,并且当它完成时,需要更新 UI。

问题是,这应该如何设计?我想了几个策略。他们都假设无论何时计算高度,都会记录相应的宽度。

第一个策略显示在此代码中:

当布局线程完成时,它会向 UI 线程发布一个 Runnable 以设置mLayoutHeight为计算出的高度,然后调用requestLayout()(and invalidate())。

第二种策略是onMeasure始终使用当时的当前值mLayoutHeight(不启动布局线程)。测试宽度变化和启动布局线程将通过覆盖来完成onSizeChanged

第三种策略是懒惰并等待在onDraw.

我想尽量减少布局线程启动和/或终止的次数,同时尽快计算所需的高度。最好也尽量减少调用次数requestLayout()

从文档中可以清楚地看出,onMeasure在单个布局过程中可能会被多次调用。onSizeChanged可能会被多次调用还不太清楚(但似乎很可能) 。所以我认为把逻辑放进去onDraw可能是更好的策略。但这似乎与自定义视图大小的精神背道而驰,所以我对它有一种公认的非理性偏见。

其他人一定也遇到过同样的问题。有没有我错过的方法?有没有最好的方法?

0 投票
3 回答
35110 浏览

android - Android绘图按钮到带有自定义视图的画布?

如何在自定义视图中的画布顶部绘制按钮?(最好在右中侧)在做 button.draw(canvas) 之前我有什么需要调用的吗?

谢谢你的时间

0 投票
3 回答
1546 浏览

android - Android:自定义视图太慢?

我有一个自定义视图,上面有很多 png 图像(每三个字符一个图像)。但是绘图和滚动太慢了。

这是我的自定义视图代码:

如何加快我的自定义视图?我想我必须为所有图像创建一次位图。但是怎么做?

提前致谢!

0 投票
1 回答
107 浏览

android - 使用 Honeycomb 保存视图状态

我开发了一个非常简单的游戏,它使用自定义视图绘制到屏幕上。在我的手机(Android 2.2)上,我可以按下设备上的主页按钮并执行其他任务。返回游戏时,它会恢复到之前的确切状态。问题是,我不必重写任何方法或真正为这种行为发生做任何事情。然而,在 Honeycomb 上,它会像我期望的那样重置一切。

这非常令人费解......我想知道是否有办法让 Honeycomb 在这方面表现得像 2.2。我对保存视图状态不太熟悉,但由于我有很多变量(数百个,取决于自定义对象的保存方式),我想手动操作会很不愉快。

0 投票
1 回答
1384 浏览

taxonomy - Orchard CMS:自定义分类法视图模板不起作用

我在我的一种自定义内容类型中使用了分类部分,并且使用形状跟踪器,我能够为该控件创建自定义视图模板 (Fields.Contrib.TaxonomyField.cshtml)。

当我对页面上的元素进行形状跟踪时,在模板下它确实显示了我的自定义模板,就像我在外部文件上的一样:

但是,当我切换到实际输出的 HTML 时,它显示的是标准的内置模板,并且没有使用我的自定义。

根据形状跟踪器,它正在使用我的自定义模板:

形状字段_Contrib_TaxonomyField

活动模板 ~/Themes/Continuum/Views/Fields.Contrib.TaxonomyField.cshtml

显示类型详细信息

这感觉像是一个错误......一切看起来都连接正确......我还需要做些什么来使用我的自定义视图模板进行分类吗?

非常感谢!