Dies geschieht aufgrund der hierarchischen Reihenfolge Ihres Aktivitätslayouts. Ihre ActionBar
wird über Ihre Ansicht gezeichnet. Sie können den Rahmen Ihrer Aktivität finden und dort die Ansicht hinzufügen.
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;
}
Denken Sie auch daran, die Ansicht zu entfernen, wenn Sie zu einem anderen Fragment navigieren.
frameLayoutRoot.removeView(circleView);
Edit:
Bitte beachten Sie, dass dies etwas ist, das man auf der Ebene tun sollten, die Sie ActionBar
hinzufügen, die die Aktivität ist. In diesem Fall würden Sie diese Problemumgehungen nicht benötigen. Dieses Zeug ist viel einfacher zu erreichen mit ToolBar
.
Versuchen Sie das Erstellen und Aufpumpen benutzerdefinierte Ansicht zuerst, dann Registerkarten –