[英]How to programmatically set the width of the LinearLayout?
是滑块的来源和课程链接:
http://www.oodlestechnologies.com/blogs/Facebook-Style-Slide-Menu-In-Android
在这种情况下,文件“left_menu.xml”的宽度决定了 TextView (android:layout_width="260dp") 如何根据设备屏幕将宽度设置为“LinearLayout”文件“left_menu.xml”? 例如,我希望“LinearLayout”的宽度始终是屏幕设备的 1/3? 或者任何方式将TextView的宽度设置为设备屏幕宽度的1/3。
要将LinearLayout
或TextView
宽度设置为设备屏幕的1/3 ,请执行以下操作:
首先获取设备的屏幕宽度:
Display display = getWindowManager().getDefaultDisplay();
Point size = new Point();
try {
display.getRealSize(size);
} catch (NoSuchMethodError err) {
display.getSize(size);
}
int width = size.x;
int height = size.y;
现在只需创建一个LayoutParams
并将其设置为Text:
LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams((int)(width/3),
LinearLayout.LayoutParams.WRAP_CONTENT); // or set height to any fixed value you want
your_layout.setLayoutParams(lp);
// OR
your_textView.setLayoutParams(lp);
LinearLayout layout = (LinearLayout)findViewById(R.id.ll);
LayoutParams params = (LayoutParams) layout.getLayoutParams();
params.height = 100;
params.width = 100;
LinearLayout linear = (LinearLayout) findViewById(R.id.ll);
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);
linear.setLayoutParams(params);
如您所见,您可以为LinearLayout.LayoutParams()构造函数设置Integer值,如下所示:
LinearLayout.LayoutParams cellParams = new LinearLayout.LayoutParams(0, 100);
构造函数需要像素而不是dp(密度像素),这是一个将DP转换为DP的公式:
(int) (<numberOfDPs> * getContext().getResources().getDisplayMetrics().density + 0.5f)
以上答案是正确的。 我只是建议未来的读者看一下他们的xml布局文件,并确保LinearLayout元素未使用weight属性。 如果是这样,请考虑更新LayoutParams对象中的权重。 另一个好的做法是从您要调整的视图中检索layout params对象,而不是从头开始创建一个布局对象,而不必设置所有值。
LinearLayout YOUR_LinearLayout =(LinearLayout)findViewById(R.id.YOUR_LinearLayout)
LinearLayout.LayoutParams param = new LinearLayout.LayoutParams(
/*width*/ ViewGroup.LayoutParams.MATCH_PARENT,
/*height*/ 100,
/*weight*/ 1.0f
);
YOUR_LinearLayout.setLayoutParams(param);
最简单的方法是设置 layoutParams 的值,请注意这个大小不在 DP 中。
view.layoutParams.width = 400;
view.layoutParams.height = 150;
view.requestLayout();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.