Android学习--关于setWidth()和setHeight()没反应的问题

Android动态设置控件大小
在Android开发中,使用match_parent设置控件高度有时需在代码中动态调整。直接调用setHeight()可能无效,尤其是当设定值小于默认值时。正确做法是通过LayoutParams对象修改高度。

在android开发过程中,对于控件的高度,宽度,虽然在xml中用android:layout_height="match_parent"设置了高度(match_parent和fill_parent是一样的,2.2版本后就用match_parent代替fill_parent了。)但有时,程序需要,必须在代码里,动态设置控制的高度或宽度。

我想当然的用setHeight(100);设置了高度,以为这样就可以了,但偏偏没有生效,google了好久都没结果,急得要命。后来在一篇文章找到了答案。

当设置的高度比原来默认的高度要小时,调用setHeight();是不生效的,这时要这样设置:

editText=(EditText)findViewById(R.id.myEditText);

// editText.setHeight(10); //不生效

editText.getLayoutParams().height = 100; //这样设置生效!

 

解析void MVVMInformListContainerNew::UpdateAppNameText(uint8_t index) { if ((index >= INFORM_NUM_OF_LIST_ITEM) || (listItems[index] == nullptr)) { return; } MVVMFirstListItem *&item = listItems[index]; item->SetAppName(informationModel.GetAppName(sameMsgCount[index].enType), sameMsgCount[index].enType); if (item->appNameText.GetTextWidth() > APPNAME_TEXT_WIDTH) { item->typeIcon.SetX(WATCH_ITEM_ICON_X); item->backgroundIcon.SetX(WATCH_ITEM_BANCKICON_X); if (sameMsgCount[index].sameMsgCount > INFORM_ONE_SIZE) { item->appNameText.SetWidth(WATCH_APPNAME_W); item->typeIcon.SetX(WATCH_ITEM_ICON_NINE_X); item->backgroundIcon.SetX(WATCH_ITEM_BACKICON_NINE_X); } else if (sameMsgCount[index].sameMsgCount == INFORM_ONE_SIZE) { item->appNameText.SetWidth(WATCH_APPNAME_ONE_W); } else { // do nothing } } else { if (item->appNameText.GetTextWidth() > APPNAME_TEXT_WIDTH_SIZE) { item->appNameText.SetWidth(APPNAME_TEXT_WIDTH_VALUE); item->typeIcon.SetX(WATCH_ITEM_ICON_TWO_X); item->backgroundIcon.SetX(WATCH_ITEM_BACK_X); if (sameMsgCount[index].sameMsgCount > INFORM_NINE_SIZE) { item->appNameText.SetWidth(WATCH_APPNAME_W); item->typeIcon.SetX(WATCH_ITEM_ICON_NINE_X); item->backgroundIcon.SetX(WATCH_ITEM_BACKICON_NINE_X); } else if (sameMsgCount[index].sameMsgCount == INFORM_ONE_SIZE) { item->appNameText.SetWidth(WATCH_APPNAME_ONE_W); } else { // do nothing } } else { item->typeIcon.SetX(WATCH_ITEM_ICON_TWO_X); item->backgroundIcon.SetX(WATCH_ITEM_BACKICON_TWO_X); } } item->messageNum.SetAlign(TEXT_ALIGNMENT_NUM_STYLE); if (sameMsgCount[index].sameMsgCount > INFORM_NINE_SIZE) { item->messageNum.SetX(ITEM_APPNAME_NUM_TEN_X); } else if (sameMsgCount[index].sameMsgCount == INFORM_ONE_SIZE) { item->appNameText.SetWidth(WATCH_APPNAME_ONE_W); item->typeIcon.SetX(ITEM_IOCN_ONE_X); item->appNameText.SetX(ITEM_APPNAME_ONE_X); if (INFORM_FIRST_ITEM_NEW_STYLE) { item->timeText.SetY(LIST_ELEMENT_TIME_Y); } } else { item->messageNum.SetX(ITEM_APPNAME_NUM_TWO_X); } return; }
最新发布
08-20
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值