如何有一个动作条图标/标志重叠的内容呢?(How do I have an ActionBar ic

2019-07-17 18:23发布

我目前正在做的我的第一个应用程序之一。 我使用ActionBarSherlock。 我想提出我的标志重叠的动作条(滚动型)。

目前,我有main_activity.xml。 在MainActivity.java我使用的setContentView查看main_activity.xml。 从那以后,我使用getSupportActionBar()为ActionBarSherlock。 我使用的RelativeLayout(http://www.mkyong.com/android/android-relativelayout-example/)尝试的东西出来。 这并没有真正的工作,因为有多种布局。

所以,我已经尝试了一些东西左右,但最终总是盈或动作条的后面,或者在到达内容之前停止。 这是因为两种不同的布局,这就是我知道的。 但是,我怎么能去解决这个问题? 可能吗? 提前致谢!

我想: http://f.cl.ly/items/3N0w243N1t2Q3i1H1f1k/Untitled-1.png

Answer 1:

您可以:

A.分裂您的图像中的两个
有顶部的动作条标志,然后显示在你的内容的底部。

B.使用一个单一的形象
你需要一个只包含您的标志(你可能会想是这样的一个布局文件ImageView一个内部LinearLayout这样你就可以轻松地设置正确的页边距)。 然后调用后setContentView为您的活动,添加您的徽标视图:

ViewGroup decorViewGroup = (ViewGroup) getWindow().getDecorView();
decorViewGroup.addView(logoView);

使用布局文件

实例布局文件(logo_view.xml):

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >

    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/logo_image"
        android:scaleType="center"
        android:layout_marginLeft="10dip"
        />

</LinearLayout>

充气布局文件:

LayoutInflater inflater = LayoutInflater.from(this);
View logoView = inflater.inflate(R.layout.logo_view, null, false);


Answer 2:

虽然原来的答案适用于某些设备,对他人的图像坐在状态栏下。 我解决了这个通过获取顶级动作条的位置,并将其与该标志图像的顶部的位置,然后只是增加了一些顶级的填充,如下所示:

    // Inflate logo layout
    LayoutInflater inflater = LayoutInflater.from(this);
    final View logoView = inflater.inflate(R.layout.menu_logo, null);

    // Add logo to view
    ViewGroup viewGroup = (ViewGroup) getWindow().getDecorView();
    viewGroup.addView(logoView);

    // Adjust the logo position
    int resId = getResources().getIdentifier("action_bar_container", "id", "android");
    final View actionBarView = viewGroup.findViewById(resId);
    if (actionBarView != null) {
        actionBarView.getViewTreeObserver().addOnGlobalLayoutListener(
                new ViewTreeObserver.OnGlobalLayoutListener() {
                    public void onGlobalLayout() {
                        // Remove the listener
                        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
                            actionBarView.getViewTreeObserver().removeOnGlobalLayoutListener(this);
                        } else {
                            actionBarView.getViewTreeObserver().removeGlobalOnLayoutListener(this);
                        }

                        // Measure views
                        int[] location = new int[2];
                        actionBarView.getLocationOnScreen(location);

                        int[] logoLocation = new int[2];
                        logoView.getLocationOnScreen(logoLocation);

                        // Add top padding if necessary
                        if (location[1] > logoLocation[1]) {
                            logoView.setPadding(0, location[1] - logoLocation[1], 0, 0);
                        }
                    }
                }
        );
    }

这个工作在广泛的设备 - 运行Android 4.0版本多达4.4.4和Android L移动预览(手机,大/小片INC Kindle Fire的HDX)。



文章来源: How do I have an ActionBar icon/logo that overlaps the content as well?