我創建我的看法編程,根本沒有XML和需要我的工作在該地區的實際大小我一直在使用這個代碼:機器人如何得到高度和寬度onCreateView
public static class DummySectionFragment extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
if (container == null) {
return null;
}
Context context = getActivity();
int tabNo = getArguments().getInt(ARG_SECTION_NUMBER);
Display display = ((WindowManager) context.getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay();
// check display size to figure out what image resolution will be loaded
DisplayMetrics metrics = new DisplayMetrics();
display.getMetrics(metrics);
Point size = new Point();
display.getRealSize(size);
display.getSize(size);
int width = size.x;
int height = size.y;
但這並沒有考慮到所有其他'裝飾'像標題欄和導航欄
該文檔說不使用顯示度量來獲得大小,但我怎麼能找出大小的視圖在onCreateView?我試過container.getHeight()但返回0
我想問題是視圖尚未創建,但必須有一個父視圖onCreateView,知道有多大的視圖是正確的?
我該如何找到?
感謝
FYI,這個工程:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
if (container == null) {
return null;
}
Context context = getActivity();
int tabNo = getArguments().getInt(ARG_SECTION_NUMBER);
Display display = ((WindowManager) context.getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay();
// check display size to figure out what image resolution will be loaded
DisplayMetrics metrics = new DisplayMetrics();
display.getMetrics(metrics);
Point size = new Point();
display.getRealSize(size);
display.getSize(size);
int width = size.x;
int height = size.y;
switch (metrics.densityDpi) {
case DisplayMetrics.DENSITY_XXHIGH: height -= 72; break;
case DisplayMetrics.DENSITY_XHIGH: height -= 64; break;
case DisplayMetrics.DENSITY_HIGH: height -= 48; break;
case DisplayMetrics.DENSITY_MEDIUM: height -= 32; break;
case DisplayMetrics.DENSITY_LOW: height -= 24; break;
default:
Log.e("onCreateView", "Unknown density");
}
}
,但它似乎並不像一個乾淨的方式來做到這一點。我猜到了xhigh和xxhigh,我還沒有找到實際的數字卻
此外,我要補充一點,視圖是從onTabSelected創建在MainActivity這樣
@Override
public void onTabSelected(ActionBar.Tab tab, FragmentTransaction fragmentTransaction) {
// When the given tab is selected, show the tab contents in the
// container view.
Fragment fragment = new DummySectionFragment();
Bundle args = new Bundle();
args.putInt(DummySectionFragment.ARG_SECTION_NUMBER, tab.getPosition() + 1);
fragment.setArguments(args);
getSupportFragmentManager().beginTransaction().replace(R.id.container, fragment).commit();
}
也許是一個更好的問題是,究竟是什麼顯示的getSize給你?我知道的是getRealSize減去的東西,但究竟是什麼?它顯然不是操作欄加上導航欄。我認爲它只有其中一個 – steveh