0

我需要在运行时向我的应用程序添加一个按钮,但我想根据方向设置不同的布局。对于纵向我希望宽度为wrap_content,但在横向我需要设置一个固定宽度。我知道如何单独执行这些操作,但我找不到任何方法让它们以与在 XML 布局文件中处理它的方式相同的方式工作。可能吗?

4

2 回答 2

0

您首先需要一个 Display 实例:

Display display = ((WindowManager) getSystemService(WINDOW_SERVICE)).getDefaultDisplay();

然后方向可以这样调用:

int orientation = display.getOrientation();

然后你可以创建一个不同的布局,

public void onConfigurationChanged(Configuration newConfig) {
    super.onConfigurationChanged(newConfig);
    Display display = ((WindowManager) getSystemService(WINDOW_SERVICE)).getDefaultDisplay();
    int orientation = display.getOrientation(); 
    switch(orientation) {
        case Configuration.ORIENTATION_PORTRAIT:
            // ToDo layout for portrait
            break;
        case Configuration.ORIENTATION_LANDSCAPE:
            // ToDo layout for landscape
            break;
    }
}

如果要在运行时设置方向,请使用,

setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_PORTRAIT | ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);

创建一个布局,如

        LinearLayout ll = new LinearLayout(this);
        ll.setOrientation(android.widget.LinearLayout.VERTICAL);
        ll.setLayoutParams(new ViewGroup.LayoutParams(-1,-1));
        // ARGB: Opaque Red
        ll.setBackgroundColor(0x88ff0000);

        TextView tv = new TextView(this);
        tv.setLayoutParams(new ViewGroup.LayoutParams(-1,-2));
        tv.setText("sample text goes here");
        // ARGB: Opaque Green
        tv.setBackgroundColor(0x5500ff00);
        ll.addView(tv);

        EditText et = new EditText(this);
        et.setLayoutParams(new ViewGroup.LayoutParams(-1,-2));
        et.setText("edit me please");
        // ARGB: Solid Blue
        et.setBackgroundColor(0xff0000ff);
        ll.addView(et);

        Button btn = new Button(this);
        btn.setText("Go!");
        btn.setOnClickListener(new Button.OnClickListener() {
            public void onClick(View v) {
                tv.setText(et.getText().toString());
            }
        });

        ll.addView(btn);
        setContentView(ll);
于 2013-07-08T10:55:31.323 回答
0

我会检查手机方向

getResources().getConfiguration().orientation

并在参考中动态添加按钮

开发

于 2013-07-08T10:48:15.120 回答