android - 我应该用什么代替 getWidth() 和 getHeight() 来知道什么时候宽度更大,什么时候高度更大

标签 android fragment display window-managers fragmentmanager

<分区>

import android.app.Fragment;
import android.app.FragmentManager;
import android.app.FragmentTransaction;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.Display;
import android.view.WindowManager;

public class MainActivity extends AppCompatActivity {

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


        FragmentManager fm=getFragmentManager();
        FragmentTransaction ft= fm.beginTransaction();


        WindowManager wm= getWindowManager();
        Display d=wm.getDefaultDisplay();

        if (d.getWidth()>d.getHeight())
        {
            Fragment1 f1 = new Fragment1();
            ft.replace(android.R.id.content, f1);
        }
        else
        {
            Fragment2 f2 = new Fragment2();
            ft.replace(android.R.id.content, f2);
        }
    ft.commit();
    }
}

我正在尝试在 android 中使用 fragment ,并希望在显示宽度大于显示高度时显示 fragment1,在显示高度大于宽度时显示 fragment2显示但在使用 getWidth()getHeight() 时,android studio 表示这些方法已被删除。 那怎么知道什么时候宽大,什么时候高大呢?

最佳答案

使用 DisplayMetrics 而不是 Display

试试这个:

import android.app.Fragment;
import android.app.FragmentManager;
import android.app.FragmentTransaction;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.Display;
import android.view.WindowManager;
import android.util.DisplayMetrics;

public class MainActivity extends AppCompatActivity {

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


        FragmentManager fm=getFragmentManager();
        FragmentTransaction ft= fm.beginTransaction();

        DisplayMetrics displayMetrics = new DisplayMetrics();
        getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);
        int height = displayMetrics.heightPixels;
        int width = displayMetrics.widthPixels;

        if (width > height)
        {
            Fragment1 f1 = new Fragment1();
            ft.replace(android.R.id.content, f1);
        }
        else
        {
            Fragment2 f2 = new Fragment2();
            ft.replace(android.R.id.content, f2);
        }

        ft.commit();
    }
}

关于android - 我应该用什么代替 getWidth() 和 getHeight() 来知道什么时候宽度更大,什么时候高度更大,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43488051/

相关文章:

html - CSS 内联 block 场景 - 全部折叠或全部折叠

python - 当选择标签样式属性设置为显示: none; in python selenium时如何从下拉列表中检索值

android - 从 Android Studio (1.0.2) 中的其他项目导入模块

java - Android Studio gradle list 合并失败

java - 无法确定空指针异常背后的原因

java - OnBackPressed 用于 Fragment 并关闭菜单项

opencv - 使用openCV快速显示图像

android - 即使手机处于锁定模式也会显示 Activity

android - 单击 fragment 中的回收站列表项后,如何将 fragment Intent 激活,以及如何获取回收站项目值?

android - 从 Activity 调用 fragment 方法时出现空指针异常