gpt4 book ai didi

java - Android:当我还在 View 上设置 layoutParams 时,在 View 上调用 setPadding() 不起作用

转载 作者:太空狗 更新时间:2023-10-29 12:39:13 26 4
gpt4 key购买 nike

如果我在 View 上调用 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() 方法就起作用了。

提前致谢。

最佳答案

我不认为代码有任何问题,而只是不理解它在做什么......如果你的 myHeight 值小于填充,你根本不会注意到效果。

在随附的一系列屏幕截图中,第一个屏幕截图是包含价格的默认 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);

文本在那里,顶部填充在那里,但它全部被强制“裁剪”到设置的高度 30(请注意,我也丢失了所有原始 xml 参数(重力、边距等),因为设置 LayoutParams 取消了所有并且只应用我在那些 LayoutParams 中设置的任何内容。

在第 3 个屏幕截图中,我将 textview 设置为以下内容(height=150,top padding = 100:

LinearLayout.LayoutParams  linearLayoutParams = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, 150);
textview.setLayoutParams(linearLayoutParams);
textview.setPadding(0, 100, 0, 0);

瞧!因为我给了 View 足够的高度,它可以完全显示文本和顶部填充(尽管我再次丢失了所有 xml 参数)。如果你回到你的源代码,试试看:用一些固定的替换 myHeight值(至少尝试 150)并查看是否按预期显示。

enter image description here

关于java - Android:当我还在 View 上设置 layoutParams 时,在 View 上调用 setPadding() 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33523568/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com