Ciò accade a causa dell'ordine gerarchico del layout dell'attività. Il tuo ActionBar
viene disegnato sulla tua vista. Puoi trovare la cornice della tua attività e aggiungere la vista lì.
private void addCircleView() {
final FrameLayout frameLayoutRoot = (FrameLayout) getActivity().getWindow()
.getDecorView().findViewById(android.R.id.content);
View circleView = inflater.inflate(
R.layout.my_circle_view, frameLayoutRoot, false);
ViewGroup.MarginLayoutParams marginLayoutParams =
((ViewGroup.MarginLayoutParams) circleView.getLayoutParams());
marginLayoutParams.topMargin = getStatusBarHeight(getActivity())
+ getActivity().getActionBar().getHeight()
+ getResources().getDimensionPixelSize(R.dimen.your_margin_top_circle);
circleView.setLayoutParams(marginLayoutParams);
frameLayoutRoot.addView(circleView);
}
public int getStatusBarHeight(Context context) {
int result = 0;
final int resourceId = context.getResources().getIdentifier(
"status_bar_height", "dimen", "android");
if (resourceId > 0) {
result = context.getResources().getDimensionPixelSize(resourceId);
}
return result;
}
Ricordarsi inoltre di rimuovere la vista quando si passa ad un altro frammento.
frameLayoutRoot.removeView(circleView);
Edit:
prega di notare che questo è qualcosa che si dovrebbe fare a livello che si aggiunge ActionBar
, che è l'attività. In tal caso non avresti bisogno di questi soluzioni alternative. Questo materiale è molto più semplice da ottenere con ToolBar
.
Prova a creare e gonfiare visualizzazione personalizzata, poi le schede –