我一直想让代码更简洁,但我不会放弃。我是说……
为了在 XML 中命名 View 的 ID,我使用了这样的匈牙利符号:
<WHAT> <WHERE> <DESCRIPTION> <SIZE>
例如:tvExampleSectionEmptyBig
, tvExampleSectionEmptySmall
以前,使用 Butter Knife
时,我没有编写太多代码,因为要进行绑定(bind),我做了这样的事情:
@BindView (R.id.tvExampleSectionEmptyBig) TextView tvEmptyBig;
@BindView (R.id.tvExampleSectionEmptySmall) TextView tvEmptySmall;
由于匈牙利符号用于避免不同 Activity 、 fragment 等中具有相同名称的 id 之间的冲突,因此代码更加清晰且可重用。它在实践中并不比在 XML 中更多。
这是怎么回事?
Kotlin 有 synthetic
,这让你的生活更轻松,因为有了 View 的 id,绑定(bind)是直接完成的,但是这么长的 id 代码很脏......此外,我使用的所有 View 都是有道理的在名为 ExampleSectionActivity
的 Activity 中,在其变量名称中包含 ExampleSection
?
我想要什么?
当然有更好的解决方案,但最初,我觉得是通过删除给定的 String
来实现重命名变量的方法。当我遵循所有 ID 名称的约定时,它在内部会是这样的:
val tvEmptyBig = tvExampleSectionEmptyBig
val tvEmptySmall = tvExampleSectionEmptySmall
当然,我想以自动化的方式进行。
另一方面,我已经尝试在不带 id 的情况下命名 id 并小心导入,但目前 synthetic
在这方面偶尔会失败,我不得不不断重建。尤其是当我打开另一个 Android Studio 实例时,我经常这样做是为了咨询我拥有的其他项目。
有什么想法吗? :-)
最佳答案
在我看来,您可以做的最简单、最干净的事情是:
private val myTextView: TextView
get() = f_layoyt_text_view
这样你就不必使用可笑的,至少在 2018 年,ButterKnife 和更不方便的 findViewById
。
关于android - 重命名变量以使 XML id 更清晰,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50964159/