问题标签 [android-compound-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 回答
181 浏览

android - 自定义/复合视图:LinearLayout 构造函数的 NoSuchMethodError

我有一个 Android 库,LabelledSpinner它本质上是一个包含 aSpinnerTextViews 的复合视图,所有这些都在 a 中LinearLayout

但是,当我在 Android 4 设备上运行该应用程序(我的库支持 Android 4 以上)时,我收到以下错误:

我的图书馆的用户遇到了同样的问题

这是我的构造函数(您也可以在 GitHub 存储库上查看整个文件) - 请注意此文件extends LinearLayout

我认为错误专门指向第三个构造函数(错误中的行引用对我来说并不完全清楚)。

我发现这个错误很奇怪,因为在查看LinearLayout类时,我正在使用的构造函数是可用的:

我在 Android Lollipop 设备上没有遇到这个问题。

0 投票
0 回答
189 浏览

java - Android,方向改变后焦点从一个视图转移到另一个视图

我创建了一个自定义复合视图,例如

当然这是一个简化版。

我已经设法在绑定到视图的 java 类中保存和恢复视图实例状态,但是我重写了

这应该防止将保存/恢复实例状态调用分派给子视图(theTextView和 the EditText)。

现在我有一个片段,其中包含两个具有不同 ID 的自定义视图;EditText当方向发生变化时,焦点总是在片段重新创建后转到第一个。我不明白为什么。

例如,让我们调用 edittext1 和 edittext2 属于具有 id1 和 id2 的自定义视图的 edittexts,会发生这种情况:edittext2 具有焦点 -> 方向更改发生 -> onSaveInstaceState 在两个视图上调用 -> edittext2 onChangeFocus 调用(从 true 到 false ) -> onRestoreInstanceStateCalled 在两个视图上 -> edittext1 onFocusChange 调用(从假到真)。

我不希望这种情况发生,我错过了什么?

0 投票
0 回答
39 浏览

android - 如果第 1 列溢出,Android-将视图从第 1 列移动到第 2 列

我有许多自定义视图,可以在点击事件上展开,它们会向下推视图。

这可能会导致某些视图完全或部分超出屏幕。我想检测这些事件并将它们移动到屏幕的第二列。

两列都占屏幕大小的一半。

我不想使用 Listview 或任何可滚动的东西,如果空间可用,只需将视图从第 1 列移动到第 2 列并返回。

编辑:我正在尝试覆盖每个视图 onDraw,因此它可以检查底部坐标是否低于屏幕 y 坐标,然后将它们重新设置为预定义的布局。但到目前为止还没有成功。

EDIT2:我设法检测到视图是否超出屏幕空间。供将来参考:我已经覆盖了我的自定义视图类的 dispatchDraw,我在其中计算了它的底部位置和屏幕高度: context.getresources().getdisplaymetrics().heightpixels;

0 投票
2 回答
679 浏览

android - 如何为 RecycleView 适配器添加的视图设置布局参数?

我正在onCreateViewHolderRecycleView. 我需要根据数据项值向右或向左对齐。

如果我以该方法设置视图的布局参数,它们将被 xml 布局文件上的值覆盖。

我能想出的唯一解决方案是拥有 2 个不同的布局文件,但这会不必要地重复文件。

知道如何通过代码完成此操作吗?

更新:我也在 onBindViewHolder 尝试,代码如下。

0 投票
0 回答
56 浏览

android - 从开关中删除文本区域

如何从 Switch View 中完全删除文本区域?我不希望文本占用 Switch 中的任何空间。有没有类似 View.GONE 的东西?

我尝试了这些属性但失败了:

我也检查了这篇文章,但没有帮助。 从 Switch 中删除空格

提前致谢。

0 投票
0 回答
376 浏览

android - 在自定义复合视图中“TextInputLayout”未显示扩展提示

我创建了一个自定义复合视图。它包含一个 imageview、一个 TextInputLayout、EditText。问题是,当我从 xml 设置属性时,它会设置所有值,如提示、图标等,但不会更改行,并且不会显示 TextInputLayout 的扩展提示。

  1. 当我设置这样的行时' textInputLayout.getEditText().setLines(lines); ' 它有效,但通过使用'etInput.setLines(lines);' 它不起作用。

  2. 扩展提示不起作用。

小部件:

布局:

0 投票
0 回答
202 浏览

android - Android 自定义组件调用 onClick 和 onLongClick 两次

我开发了一个自定义组件,在其中实现了 onClick、onLongClick 和 onTouchListener。一切正常,除了 onLongClick 和 onClick 被调用两次,即使我只做了一次操作。有什么问题请指导解决方案。再次调用方法需要相当长的时间,即约 1 秒。

以下是代码:

自定义小部件:

0 投票
1 回答
78 浏览

android - 从 RelativeLayout 扩展的自定义复合视图。子视图的定位不正确

我想制作包含 EditText 和 TextView 的小部件,看起来像这样: 自定义编辑文本

为了实现这一点,我创建了RelativeLayout:

上面的 RelativeLayout 效果很好,看起来像计划的那样。为了制作复合视图,我删除了</RelativeLayout>标签并将其包装到</merge>(我不应用代码,因为除了 RelativeLayout 标签之外它是相同的)

为了使用视图,我编写了扩展 RelativeLayout 的 MyCustomEditText 类

我正在尝试在其他布局中使用此视图,但文本视图的定位很难看:

在此处输入图像描述

我认为从 RelativeLayout 扩展视图足以正确定位。所以我需要你的帮助来定义我哪里出错了。如何正确定位元素?

PS 将RelativeLayout替换为merge标签是为了优化视图的绘制,避免不必要的嵌套布局

0 投票
0 回答
90 浏览

android - 具有不同类型行的 Listview 片段,其中行是复合视图

我正在做一份问卷,这意味着一个片段代表一个问题。一个问题包含一些可以是不同类型的字段,例如文本字段、评分字段...

这些字段在片段的 ListView 中呈现为行。它们被实现为复合视图,因为我需要对字段进行一些其他工作。

问题是当我通过自定义适配器渲染行时,会引发InflateException异常:

活动 xms 如下所示:

片段布局如下所示:

片段onCreateView看起来像:

适配器代码如下所示:

复合视图的示例。

及其xml:

当它在线呈现这些视图时,适配器类中的getView方法中的代码失败:

0 投票
2 回答
56 浏览

android - 为什么不能直接将 setOnClickListener 用于复合视图?

我有一个简单的复合视图ConstraintLayout作为根。clickable,等属性focusable已启用。它完美地显示在我的布局中。我想在它被点击时处理。方法很简单,但它不起作用:

但是根本不调用该回调。我真的不明白为什么它拒绝被调用。另一种方法如下:

  1. 为您的复合视图实现 OnClickListener
  2. 调用您setOnClickListenerinit复合视图
  3. 创建您自己的回调并在onClick被调用时使用它

但是这种方法需要更多的代码,它只是实现了已经完成的内容。回调可能会在某个时候变为空。所以,我的问题是为什么简单setOnClickListener不起作用?如果它不起作用,当我的复合视图被点击时如何得到通知?

如果您需要,有一个代码:

/// 下面是我的复合视图

这是我的使用方法:

这是它的类: