Mic*_*ons 4 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
testView.setPadding(0, 100, 0 , 0);
textView.setLayoutParams(linearLayoutParams);
//This does work
textView.setPadding(0, 100, 0 , 0);
Run Code Online (Sandbox Code Playgroud)
有谁知道如何同时使用 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);
}
Run Code Online (Sandbox Code Playgroud)
但如果我从上面注释掉这一行:
// textView.setLayoutParams(linearLayoutParams);
Run Code Online (Sandbox Code Playgroud)
然后 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);
Run Code Online (Sandbox Code Playgroud)
文本在那里,顶部填充在那里,但它都被迫“裁剪”到 30 的设置高度(注意我也丢失了我所有的原始 xml 参数(重力、边距等),因为设置 LayoutParams 取消了所有这些并且只适用我在那些 LayoutParams 中设置的任何内容)。
在第三个屏幕截图中,我将 textview 设置为以下(高度 = 150,顶部填充 = 100:
LinearLayout.LayoutParams linearLayoutParams = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, 150);
textview.setLayoutParams(linearLayoutParams);
textview.setPadding(0, 100, 0, 0);
Run Code Online (Sandbox Code Playgroud)
瞧!由于我给了视图足够的高度,它可以完全显示文本和顶部填充(尽管我再次丢失了所有 xml 参数)。如果你回到你的源代码,试试看:用一些固定的替换 myHeight值(至少尝试 150)并查看内容是否按预期显示。
| 归档时间: |
|
| 查看次数: |
6988 次 |
| 最近记录: |