如果我在视图上调用setPadding(),我可以成功地设置填充,但是,如果我先设置layoutParams,然后设置填充,或者先设置填充,然后设置layoutParams,则不会应用填充。
演示:
//This doesn't work
textView.setLayoutParams(linearLayoutParams);
textView.setPadding(0, 100, 0 , 0);
//This doesn't work either
testView.setPadding(0, 100, 0 , 0);
textView.setLayoutParams(linearLayoutParams);
//This does work
textView.setPadding(0, 100, 0 , 0);
有没有人知道如何同时使用setLayoutParams()和setPadding(),或者为什么setLayoutParams()会阻止setPadding()工作?
编辑:更多详细信息:
我在onCreate()中调用此方法
public void initTextView(){
Textview textView = (TextView) findViewById(R.id.textView);
LinearLayout.LayoutParams linearLayoutParams = new LinearLayout.LayoutParams(myWidth, myHeight);
textView.setLayoutParams(linearLayoutParams);
//This doesn't work
textView.setPadding(0, 100 ,0 , 0);
}
但是如果我从上面注解掉这一行:
// textView.setLayoutParams(linearLayoutParams);
这样setPadding()方法就可以正常工作了。
先谢谢你。
2条答案
按热度按时间5jvtdoz21#
我不相信代码有什么问题,而只是不理解它在做什么....如果你的myHeight值小于填充,你只是不会注意到效果。
在所附的一系列屏幕截图中,第一个屏幕截图是包含价格的默认TextView(除了xml中设置的布局参数外,它没有布局参数)。
在第二个屏幕截图中,我将textview设置为以下值(高度=30,顶部填充= 100:
文本在那里,顶部填充在那里,但它都被强制“裁剪”到设置的高度30(注意,我还丢失了所有原始的xml参数(重力、边距等),因为设置LayoutParams取消了所有这些参数,只应用我在这些LayoutParams中设置的任何内容)。
在第三个屏幕截图中,我将textview设置为以下值(高度=150,顶部填充= 100:
瞧!因为我给了视图足够的高度,它可以完全显示文本和顶部填充(尽管我再次丢失了所有的xml参数)。如果您返回到源代码,请尝试一下:将myHeight替换为某个固定值(尝试至少为150),然后查看是否显示了应有的内容。
7rfyedvj2#
在Kotlin