2014-08-29 147 views
0

我想根据设备屏幕的大小创建布局。这是我的MainActivity以编程方式在android中设置布局的大小

public class LoginActivity extends Activity { 

int width_device; 
int height_device; 
LinearLayout layout_login_content; 
LinearLayout.LayoutParams param; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_login); 

    // Get screen size 
    width_device = Utility.getDeviceWidth(this); 
    height_device = Utility.getDeviceHeight(this); 

    // Get widget from layout 
    layout_login_content = (LinearLayout) findViewById(R.id.layout_login_content); 

    // Set up layout size 
    param = (LinearLayout.LayoutParams) layout_login_content 
      .getLayoutParams(); 
    param.width = width_device * 60/100; 
    param.height = height_device * 60/100; 
    layout_login_content.setLayoutParams(param); 
} 

不要担心如何获得屏幕大小。我做到了,它工作。

这是我main_fragment.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:id="@+id/layout_login_content" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:layout_gravity="center" 
android:orientation="vertical" 
tools:context="login.LoginActivity" > 
</LinearLayout> 

这是错误信息

java.lang.ClassCastException: android.widget.FrameLayout$LayoutParams cannot be cast to android.widget.LinearLayout$LayoutParams 

我不知道这里发生了什么。我声明LinearLayout.LayoutParams,从得到参数LinearLayout in xml。但为什么它不能正确投射?

对不起,我的英语。我希望大家明白我的意思:( 谢谢你这么多

回答

1

看起来像你的LinearLayout是继承一些的FrameLayout PARAMS

尽量简单地使用FrameLayout.LayoutParams代替LinearLayout.LayoutParams:!

param = (FrameLayout.LayoutParams) layout_login_content.getLayoutParams(); 
+0

它的工作原理!非常感谢!^ _ ^ – 2014-08-30 01:28:07

相关问题