2015-01-12 136 views
8

是滑塊的來源和教訓鏈接:如何以編程方式設置LinearLayout的寬度?

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

在這種情況下,文件「left_menu.xml」的寬度決定的TextView(機器人:layout_width =「260dp」) 怎麼辦根據設備屏幕,我將寬度設置爲「LinearLayout」文件「left_menu.xml」?例如,我希望「LinearLayout」的寬度始終是屏幕設備的1/3?或者以任何方式設置設備屏幕寬度的TextView 1/3的寬度。

回答

16

要設置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並將其設置爲文本:

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

感謝您的回覆!謝謝你們!我使用了所有的答案並獲得了適用於我的代碼。 – GAAAN

+0

偉大的你有你的問題解決了:) –

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

感謝您的回覆!我是編程新手。我已經嘗試過了。我無法擺脫錯誤。我幾乎選擇了所有......(http://f-picture.net/lfp/s017.radikal.ru/i410/1501/ce/d36745f64384.png/htm)哪一個是正確的? – GAAAN

+0

第一個,android.widget.linearlayout –

+0

顯示你的logcat –

4
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設置整數值()構造函數,像這樣:

LinearLayout.LayoutParams cellParams = new LinearLayout.LayoutParams(0, 100); 

的costructor想要的像素,而不是DP(密度像素) ,這裏對P-XS從移民轉換公式:

(int) (<numberOfDPs> * getContext().getResources().getDisplayMetrics().density + 0.5f)  
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); 
0

上述答案是正確的。我只是建議未來的讀者看看他們的xml佈局文件,並確保LinearLayout元素不使用weight屬性。如果是這樣,請考慮更新LayoutParams對象中的權重。 另一個好的做法是從您要調整的視圖中檢索佈局參數對象,而不是從頭創建一個,並且必須設置所有值。

相關問題