【发布时间】:2021-09-03 04:33:52
【问题描述】:
我是 kotlin 的新手。
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val btnDivide : Button = findViewById(R.id.divideInputButton)
val btnCancel : Button = findViewById(R.id.cancelInputButton)
我正在尝试以动态方式更改 btnCancel,只是为了好玩,因为我看到(我也是 xml 的新手,所以我可能错了)在 xml 文件中我不能做类似android:layout_width="wrap_content*2" 或基于显示的类似动态内容。
所以我试图在 setContentView(R.layout.activity_main) 之后的 MainActivity.kt 中执行此操作
大多数人都喜欢做类似的事情
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val btnDivide : Button = findViewById(R.id.divideInputButton)
val btnCancel : Button = findViewById(R.id.cancelInputButton)
var paramsCancel : LinearLayout.LayoutParams = btnCancel.layoutParams as LinearLayout.LayoutParams
var paramsDivide : LinearLayout.LayoutParams = btnDivide.layoutParams as LinearLayout.LayoutParams
paramsCancel.width = paramsDivide.width
是一个非常糟糕的实践imo,因为我正在设置xml布局->在设备上显示它->做一些数学和操作->更改值并显示canges;因此,如果应用在setContentView(R.layout.activity_main) 和paramsCancel.width = paramsDivide.width 之前有很多待办事项,用户在使用应用的过程中会看到两种类型的 UI。
那么,有没有更好的方法以编程方式更改某些参数(如 btn.width)?如果是,那是正确的方式还是我应该完全改变主意?
在此示例中,我试图将 btnCncel 宽度设置为其他按钮的宽度,但无法正常工作(在图像中似乎还可以,但毕竟我已经在 xml 文件中使用 dp 手动更改了宽度抑郁症)。如果我将宽度设置为paramsCancel.width = 100works(通常与整数一起使用)
【问题讨论】:
标签: android xml kotlin button oncreate