繁体   English   中英

如何以编程方式设置 LinearLayout 的宽度?

[英]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。

要将LinearLayoutTextView宽度设置为设备屏幕的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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM