Java 根据屏幕方向在微调器和listview之间切换

Java 根据屏幕方向在微调器和listview之间切换,java,android,listview,orientation,spinner,Java,Android,Listview,Orientation,Spinner,在我的android应用程序中,我有一个包含不同计算器的微调器,当选择一个计算器时,它会显示在下面的滚动视图中。当屏幕设置为水平时,布局会发生变化,因此scrollview位于右侧,微调器位于左侧,其工作方式相同 然而,当屏幕处于水平位置时,listview看起来会更好,但是我似乎找不到在java代码中进行切换的方法 有人能帮忙吗 下面是initialize方法的代码,我想知道是否有方法插入if语句,如果屏幕垂直,微调器将被初始化,如果屏幕水平,listview将被初始化 private voi

在我的android应用程序中,我有一个包含不同计算器的微调器,当选择一个计算器时,它会显示在下面的滚动视图中。当屏幕设置为水平时,布局会发生变化,因此scrollview位于右侧,微调器位于左侧,其工作方式相同

然而,当屏幕处于水平位置时,listview看起来会更好,但是我似乎找不到在java代码中进行切换的方法

有人能帮忙吗

下面是initialize方法的代码,我想知道是否有方法插入if语句,如果屏幕垂直,微调器将被初始化,如果屏幕水平,listview将被初始化

private void initialize() {

    valg_vertical = (Spinner) findViewById(R.id.sKalk);

    // Adds the custom look for the spinner
    ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
            R.layout.custom_spinner, getResources().getStringArray(
                    R.array.calculator));
    adapter.setDropDownViewResource(SpinnerItemLayout);
    valg_vertical.setAdapter(adapter);
    // Adds the custom look for the spinner

    lLayout = (LinearLayout) findViewById(R.id.lInSVKalk);
    valg_vertical.setOnItemSelectedListener(this);
}
private void initialize(){
valg_垂直=(微调器)findViewById(R.id.sKalk);
//添加微调器的自定义外观
ArrayAdapter=新的ArrayAdapter(此,
R.layout.custom_微调器,getResources().getStringArray(
R.array.calculator);
adapter.setDropDownViewResource(SpinnerItemLayout);
valg_垂直设置适配器(适配器);
//添加微调器的自定义外观
lLayout=(线性布局)findViewById(R.id.lInSVKalk);
valg_vertical.setOnItemSelectedListener(此);
}

您有两种可能的解决方案:

  • 纵向
    横向
    模式创建不同的布局(它们分别位于
    布局
    布局地
    文件夹下)
  • 在布局中创建容器(例如,
    FrameLayout
    )。并在运行时根据方向向其添加相应的视图
  • 无论如何,由于两个方向使用不同的元素,您应该在代码中添加以下
    if
    语句:

    if (getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE){
    
    } else {
    
    }
    

    非常感谢你,太好了!我提出了不同的观点,但现在我不知道如何在运行时在它们之间切换。@jangerhard嗯,我相信根本原因是
    NPE
    ?如果是这样,你应该根据自己的想法找到自己的观点!我没有更改不同组件的ID,现在它工作得很好!再次感谢!