Java Android:在视图上调用setPadding()不会';当我还在视图上设置layoutParams时,它不起作用

Java Android:在视图上调用setPadding()不会';当我还在视图上设置layoutParams时,它不起作用,java,android,view,android-linearlayout,layoutparams,Java,Android,View,Android Linearlayout,Layoutparams,如果对视图调用setPadding(),则可以成功设置填充,但是,如果先设置layoutParams,然后设置填充,或者先设置填充,然后设置layoutParams,则不会应用填充 演示: //This doesn't work textView.setLayoutParams(linearLayoutParams); textView.setPadding(0, 100, 0 , 0); //This doesn't work either testV

如果对视图调用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()中调用此方法

但如果我从上面注释掉这一行:

// textView.setLayoutParams(linearLayoutParams);
然后setPadding()方法就可以工作了


提前谢谢

我不相信代码有什么问题,只是不理解它在做什么。。。。如果myHeight值小于padding,那么您就不会注意到效果

在所附的一系列屏幕截图中,第一个屏幕截图是包含价格的默认TextView(除了xml中设置的参数外,它没有其他布局参数)

在第二个屏幕截图中,我将textview设置为以下值(高度=30,顶部填充=100):

LinearLayout.LayoutParams  linearLayoutParams = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, 30);
textview.setLayoutParams(linearLayoutParams);
textview.setPadding(0, 100, 0, 0);
LinearLayout.LayoutParams  linearLayoutParams = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, 150);
textview.setLayoutParams(linearLayoutParams);
textview.setPadding(0, 100, 0, 0);
文本在那里,顶部填充在那里,但它都被强制“裁剪”到设置的高度30(注意,我还丢失了所有原始xml参数(重力、边距等),因为设置LayoutParams会取消所有这些,并且只应用我在这些LayoutParams中设置的任何参数)

在第三个屏幕截图中,我将textview设置为以下值(高度=150,顶部填充=100):

LinearLayout.LayoutParams  linearLayoutParams = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, 30);
textview.setLayoutParams(linearLayoutParams);
textview.setPadding(0, 100, 0, 0);
LinearLayout.LayoutParams  linearLayoutParams = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, 150);
textview.setLayoutParams(linearLayoutParams);
textview.setPadding(0, 100, 0, 0);
瞧!既然我给了视图足够的高度,它就可以完全显示文本和顶部填充(尽管我又丢失了所有的xml参数)…如果你回到源代码,试试看:用一些固定值替换myHeight(至少150次),看看事情是否按应有的方式显示


为什么您认为
setPadding
不起作用?是否有代码重现不良行为?感谢您的回复。我不知道它不起作用的确切原因,但我知道,当我不调用setLayoutParams()时,填充会应用于视图,但如果我在setPadding()之前或之后运行setLayoutParams,setPadding()会方法不起作用。我将给出更深入的代码。你可以展示你的xml吗?我已经尝试过了,在我的例子中一切都正常。谢谢你的回答,这是xml的要点,有问题的TextView在要点的第64行:@walkmn我尝试过用一个简化的xml,一个RelativeLayout,一个子TextView,setLayoutParams仍然否定了它setPadding()的应用程序。这发生在我的2个棒棒糖设备上。您在哪个版本的Android上运行测试?感谢您的回复。