我遇到了g = nx.from_pandas_edgelist(df, 0, 1)
以某种方式改变视图状态的问题。
我已经设置了一个监听.measure(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT)
事件并执行onClick
的视图。请注意,当我在.measure
中直接执行此操作时,它不会发生。
我希望此代码只能用绿色重新绘制onCreate
,而不是更改任何位置。
简单视图:
点击后的相同视图。注意位置是如何关闭的:
活动:
textView
布局:
class Main2Activity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main2)
setSupportActionBar(toolbar)
val root = findViewById<ConstraintLayout>(R.id.foo)
val tv = root.findViewById<TextView>(R.id.bar)
tv.setOnClickListener {
tv.measure(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT)
tv.setTextColor(resources.getColor(R.color.green))
}
}
}
答案 0 :(得分:0)
您可能不想首先致电measure()
。系统应该为您照顾。请继续删除该电话。
如果您遗漏了某些问题,并且您绝对必须致电measure()
,那么您需要确保传递正确的参数。 The documentation for View.measure()
指定您必须传递&#34;测量规格&#34;,不 LayoutParams
常量。也就是说,而不是你拥有的东西,你会传递看起来像这样的东西:
tv.measure(View.MeasureSpec.makeMeasureSpec(200, View.MeasureSpec.EXACTLY),
View.MeasureSpec.makeMeasureSpec(200, View.MeasureSpec.EXACTLY));
View.MeasureSpec.makeMeasureSpec(200, View.MeasureSpec.EXACTLY)
和ViewGroup.LayoutParams.MATCH_PARENT
都属于int
类型,这就是编译器没有抱怨并且应用程序没有崩溃的原因。但是,您无法将任何旧int
传递给此方法。
但请注意,此调用的显式目的是更改视图的布局。因此,如果您调用measure,那么您将更改视图的布局,因为这就是它所做的。
请注意,当我在onCreate中直接执行此操作时,它不会发生。
我不确定,但我怀疑这是因为您在measure()
的{{1}}手动拨打之前系统启用了视图布局期间onCreate()
,因此修改后的结构会被抛弃。当您在measure()
中执行此操作时,您的手动呼叫将排在第二位,并覆盖系统发起的呼叫。