У меня есть фрагмент с методом onViewCreate.Android getWidth in Fragment возвращает 0
Я создаю там TableLayout с несколькими строками и колоннами. Я хочу получить высоту и ширину одной ячейки (каждая ячейка имеет одинаковую ширину и высоту). Однако, когда оба cell.getHeight() и cell.getWidth() возвращают 0. Более того, когда я использовал метод() onPreDraw,
private TextView cell
private int finalHeight;
private int finalWidth;
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
Context contextThemeWrapper = new ContextThemeWrapper(getActivity(), android.R.style.Theme_Holo_Light);
LayoutInflater localInflater = inflater.cloneInContext(contextThemeWrapper);
View thisView = localInflater.inflate(R.layout.fragment_wizard_table, container, false);
final TableLayout table = new TableLayout(App.getAppContext());
for (hoursIter = 0; hoursIter < hours.length; hoursIter++) {
TableRow row = new TableRow(App.getAppContext());
for (daysIter = 0; daysIter < initDays().length; daysIter++) {
cell = new TextView(App.getAppContext())
// cell.getWidth() here return 0;
}
}
// cell.getWidth() here still returns 0 ;
cell.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
cell.getViewTreeObserver().removeGlobalOnLayoutListener(this);
finalWidth = cell.getWidth(); // it's ok here (work)
finalHeight = cell.getHeight(); // it's ok here (works)
}
});
// BUT NOW:
Log.d(TAG, finalWidht + " "); // returns still 0 ? WHY ?
}
заранее спасибо за помощь!
так что я должен сделать, чтобы этот код был правильным? – dejvid
правильный код зависит от того, где вы собираетесь использовать ширину и высоту ячейки. вы можете использовать свой собственный код при вызове onGlobalLayout. –