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

时间:2015-01-12 13:25:55

标签: android android-layout

是滑块的来源和课程链接:

http://www.oodlestechnologies.com/blogs/Facebook-Style-Slide-Menu-In-Android

在这种情况下,文件的宽度" left_menu.xml"确定TextView(android:layout_width =" 260dp") 如何将宽度设置为" LinearLayout" file" left_menu.xml"取决于设备屏幕?例如,我想要" LinearLayout"的宽度。一直是屏幕设备的1/3?或者以任何方式设置TextView宽度为设备屏幕宽度的1/3。

5 个答案:

答案 0 :(得分:22)

要将设备屏幕的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);

答案 1 :(得分:5)

LinearLayout layout = (LinearLayout)findViewById(R.id.ll);
LayoutParams params = (LayoutParams) layout.getLayoutParams();
params.height = 100;
params.width = 100;

答案 2 :(得分:5)

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转换PX的公式:

(int) (<numberOfDPs> * getContext().getResources().getDisplayMetrics().density + 0.5f)     

答案 3 :(得分:2)

以上答案是正确的。我只是建议未来的读者看看他们的xml布局文件,并确保LinearLayout元素没有使用权重属性。如果是这样,请考虑更新LayoutParams对象中的权重。 另一个好的做法是从您尝试调整的视图中检索布局参数对象,而不是从头创建一个并且必须设置所有值。

答案 4 :(得分:0)

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);