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

GAA*_*AAN 15 android android-layout

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

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.

Muh*_*aat 25

要设置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;
Run Code Online (Sandbox Code Playgroud)

现在只需创建一个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);
Run Code Online (Sandbox Code Playgroud)


Mur*_*ain 5

LinearLayout layout = (LinearLayout)findViewById(R.id.ll);
LayoutParams params = (LayoutParams) layout.getLayoutParams();
params.height = 100;
params.width = 100;
Run Code Online (Sandbox Code Playgroud)


小智 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);
Run Code Online (Sandbox Code Playgroud)

如您所见,您可以为LinearLayout.LayoutParams()构造函数设置Integer值,如下所示:

LinearLayout.LayoutParams cellParams = new LinearLayout.LayoutParams(0, 100);   
Run Code Online (Sandbox Code Playgroud)

结构函数需要像素而不是dp(密度像素),这里是从DP转换PX的公式:

(int) (<numberOfDPs> * getContext().getResources().getDisplayMetrics().density + 0.5f)     
Run Code Online (Sandbox Code Playgroud)