2014-03-05 73 views
0

我在RelativeLayout中有一个linearLayout。我需要能够根据屏幕尺寸动态设置线性布局的高度。我有一些困难。 我怎么能做到这一点?在RelativeLayout中动态设置LinearLayout高度/宽度

MAIN:

public class MainActivity extends Activity { 

LinearLayout L; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    L=(LinearLayout)findViewById(R.id.top); 

    L.setLayoutParams(new LinearLayout.LayoutParams(1080, 400)); 
} 

} 

XML:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 

tools:context=".MainActivity" > 

<LinearLayout 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:background="#fff" 
    android:id="@+id/top" 
    android:orientation="horizontal" > 

    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="@string/hello_world" /> 
</LinearLayout> 

+0

有什么难度/问题? –

+0

@JustinJasmann我得到这个错误-java.lang.ClassCastException:android.widget.LinearLayout $ LayoutParams不能转换为android.widget.RelativeLayout $ LayoutParams at android.widget.RelativeLayout $ DependencyGraph.findRoots(RelativeLayout.java:1722) – Samantha

回答

3

当您设置布局参数,可以它需要是的父母。

开关:

L.setLayoutParams(new LinearLayout.LayoutParams(1080, 400)); 

要:

L.setLayoutParams(new RelativeLayout.LayoutParams(1080, 400)); 
+0

太棒了!快乐编码:) –

0
在你的LinearLayout

,只需设置

android:layout_height="0dp" 
android:layout_weight="1" 
+0

不起作用 – Samantha

+0

我认为你必须删除L =(LinearLayout)findViewById(R.id.top); L.setLayoutParams(new LinearLayout.LayoutParams(1080,400)); – s4m0k

+0

@ s4m0k你如何在代码中做到这一点? –

0

贾斯汀回答

L.setLayoutParams(new RelativeLayout.LayoutParams(1080, 400)); 

你也可能需要,如果你已经设置了布局

L.requestLayout();