كيفية وضع AdMob في الجزء العلوي من الشاشة (أعلاه) Android Actionbar؟

I trying to place an AdMob ad at the top of the screen (above) the Android Actionbar. ActionBar AdMob above

  • الأصفر = ActionBar
  • أحمر = محتوى
  • green = AdMob

سؤال مشابه لقد وجدت هو وضع إعلان في أسفل الشاشة مع شريط Action تظهر. لكن حتى الآن لم أتمكن من معرفة كيفية وضعها في الجزء العلوي من الشاشة.

لقد جربتها بهذه الطريقة:

private AdView adView;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

   //main view setup
    setContentView(R.layout.main);
    this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);

   //actionbar setup
    ActionBar actionBar = getActionBar();
    actionBar.setTitle("Search");
    actionBar.setDisplayHomeAsUpEnabled(true);

    final LinearLayout content = (LinearLayout) findViewById(android.R.id.content).getParent();

   //Create the adView
    adView = new AdView(this, AdSize.BANNER, "ID");

   //Lookup your LinearLayout assuming it’s been given
   //the attribute android:id="@+id/mainLayout"

   //Add the adView to it
    FrameLayout.LayoutParams parm = (FrameLayout.LayoutParams) content.getLayoutParams();
    parm.gravity = Gravity.TOP;
    content.addView(adView);

   //Initiate a generic request to load it with an ad
    AdRequest adRequest = new AdRequest();
    adRequest.addTestDevice("TEST_DEVICE_ID");
    adView.loadAd(adRequest);
}

يمكنك أدناه مشاهدة جزء من عارض التراتب الهجري لتطبيقي. طريقة العرض "id/main" هي التنسيق الرئيسي الخاص بي. كما ترى في الصورة ، يحتوي ActionBar على معرف يسمى "id/action_bar_container". في شفرتي أعلاه ، تمكنت من الوصول إلى "محتوى" FrameLayout ، ولكن لم أتمكن من الوصول إلى عرض action_bar_container. لأنهم على نفس المستوى الهرمي (على ما أظن) يجب أن يكون من الممكن الوصول إلى عرض ActionBar بطريقة ما.

enter image description here

لكنها لم تنجح:

Without ActionBar displayed

أي فكرة عن كيفية تحقيق ذلك أو ارتباط كيف يمكن أن يعمل أو بيان رسمي لا يعمل.

5
viperbone مرحبًا ، هل لديك رمز حل كامل للعينة؟ كان لدي بعض المشاكل ومحاولة القيام بذلك هي شظايا
وأضاف المؤلف Gorets, مصدر
viperbone مرحبًا ، هل لديك رمز حل كامل للعينة؟ كان لدي بعض المشاكل ومحاولة القيام بذلك هي شظايا
وأضاف المؤلف Gorets, مصدر
لا يمكنك وضع أي شيء فوق شريط الإجراءات في الوضع الأفقي ، لقد جاهدت لأسابيع معه ، حتى استسلمت أخيرًا ، وأضع الشريط الخاص بي في الأعلى ، إذا كنت في صورة - سيساعدك هذا على stackoverflow.com/questions/16002217/&hellip؛
وأضاف المؤلف Lena Bru, مصدر
لا يمكنك وضع أي شيء فوق شريط الإجراءات في الوضع الأفقي ، لقد جاهدت لأسابيع معه ، حتى استسلمت أخيرًا ، وأضع الشريط الخاص بي في الأعلى ، إذا كنت في صورة - سيساعدك هذا على stackoverflow.com/questions/16002217/&hellip؛
وأضاف المؤلف Lena Bru, مصدر
نعم ، استخدمت TabIndicator بدلاً من ذلك ، وهو يشبه عرض القائمة العادي مع برنامج viewpager ، والذي كان من السهل تنفيذه ، ولكنه لا يظهر تمامًا مثلما يفعل شريط الإجراءات
وأضاف المؤلف Lena Bru, مصدر
نعم ، استخدمت TabIndicator بدلاً من ذلك ، وهو يشبه عرض القائمة العادي مع برنامج viewpager ، والذي كان من السهل تنفيذه ، ولكنه لا يظهر تمامًا مثلما يفعل شريط الإجراءات
وأضاف المؤلف Lena Bru, مصدر
شكرا على الاجابة. يبدو أن حلك لا يعمل إلا إذا تم تمكين NavigationMode TABS؟ إذا لم تجد أي حل آخر وأنشأت شريط العنوان الخاص بك ولم تستخدم شريط الإجراءات على الإطلاق؟
وأضاف المؤلف Bruno Bieri, مصدر
شكرا على الاجابة. يبدو أن حلك لا يعمل إلا إذا تم تمكين NavigationMode TABS؟ إذا لم تجد أي حل آخر وأنشأت شريط العنوان الخاص بك ولم تستخدم شريط الإجراءات على الإطلاق؟
وأضاف المؤلف Bruno Bieri, مصدر
Gorets لا ، آسف ، لا يمكنني مساعدتك في هذه الحالة.
وأضاف المؤلف Bruno Bieri, مصدر

9 إجابة

يمكنك استخدام getRootView() على أي عرض أو getWindow (). getDecorView() للحصول على PhoneDecorView . لديه طفل واحد - عمودي LinearLayout .

أضف مخططك هناك كطفل أول.

لاحظ أن هذه فكرة سيئة ، سيئة. من وجهة نظر تجربة المستخدم ، هذه ضربة مروعة ضد جميع إرشادات التصميم. يجب أن يكون شريط الإجراءات أعلى في الجزء العلوي لأسباب متعددة تتعلق بالتصميم.

ثانيًا ، قد يؤدي ذلك إلى اختراق الأجهزة التي تحمل علامة OEM.

ثالثًا ، ماذا عن الأجهزة اللوحية في المشهد ، هل سيكون لديك بالفعل شريط ضخم في القمة؟

في الختام ، نعم ، هذا ممكن لكنه فكرة سيئة. لا تفعل ذلك.

6
وأضاف
كن حذرا! هذا صحيح بالنسبة إلى جهاز Galaxy S3 mini ، ولكن على Galaxy S4 كان com.android.internal.widget.ActionBarOverlayLayout بدلاً من LinearLayout. أفضل حل بالنسبة لي هو إدراج LinearLayout الخاصة بي بين decorView وعرض للمحتوى.
وأضاف المؤلف Vladyslav Savchenko, مصدر

يمكنك استخدام getRootView() على أي عرض أو getWindow (). getDecorView() للحصول على PhoneDecorView . لديه طفل واحد - عمودي LinearLayout .

أضف مخططك هناك كطفل أول.

لاحظ أن هذه فكرة سيئة ، سيئة. من وجهة نظر تجربة المستخدم ، هذه ضربة مروعة ضد جميع إرشادات التصميم. يجب أن يكون شريط الإجراءات أعلى في الجزء العلوي لأسباب متعددة تتعلق بالتصميم.

ثانيًا ، قد يؤدي ذلك إلى اختراق الأجهزة التي تحمل علامة OEM.

ثالثًا ، ماذا عن الأجهزة اللوحية في المشهد ، هل سيكون لديك بالفعل شريط ضخم في القمة؟

في الختام ، نعم ، هذا ممكن لكنه فكرة سيئة. لا تفعل ذلك.

6
وأضاف
كن حذرا! هذا صحيح بالنسبة إلى جهاز Galaxy S3 mini ، ولكن على Galaxy S4 كان com.android.internal.widget.ActionBarOverlayLayout بدلاً من LinearLayout. أفضل حل بالنسبة لي هو إدراج LinearLayout الخاصة بي بين decorView وعرض للمحتوى.
وأضاف المؤلف Vladyslav Savchenko, مصدر
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

import com.actionbarsherlock.app.ActionBar;
import com.actionbarsherlock.app.SherlockActivity;

public class MainActivity extends SherlockActivity {
private ActionBar bar;
@Override
protected void onCreate(Bundle savedInstanceState) {
    setTheme(R.style.Theme_Sherlock);
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    bar = getSupportActionBar();
    LayoutInflater inflater =       (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    View customView = (View)inflater.inflate(R.layout.custom_view, null); //<-- put your ad instead of this
    bar.setDisplayOptions(
            ActionBar.DISPLAY_SHOW_CUSTOM,
            ActionBar.DISPLAY_SHOW_CUSTOM | ActionBar.DISPLAY_SHOW_HOME
                    | ActionBar.DISPLAY_SHOW_TITLE);
    bar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
    bar.setCustomView(customView, new ActionBar.LayoutParams(
            ViewGroup.LayoutParams.MATCH_PARENT,
            ViewGroup.LayoutParams.MATCH_PARENT));
}

 @Override
    public boolean onCreateOptionsMenu(com.actionbarsherlock.view.Menu menu) {
        getSupportMenuInflater().inflate(R.menu.test_menu, menu);
        return super.onCreateOptionsMenu(menu);
    }
 }
0
وأضاف
هل لديك أي فكرة عن كيف يمكن أن تعمل مع المدمج في Android ActionBar؟
وأضاف المؤلف Bruno Bieri, مصدر
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

import com.actionbarsherlock.app.ActionBar;
import com.actionbarsherlock.app.SherlockActivity;

public class MainActivity extends SherlockActivity {
private ActionBar bar;
@Override
protected void onCreate(Bundle savedInstanceState) {
    setTheme(R.style.Theme_Sherlock);
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    bar = getSupportActionBar();
    LayoutInflater inflater =       (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    View customView = (View)inflater.inflate(R.layout.custom_view, null); //<-- put your ad instead of this
    bar.setDisplayOptions(
            ActionBar.DISPLAY_SHOW_CUSTOM,
            ActionBar.DISPLAY_SHOW_CUSTOM | ActionBar.DISPLAY_SHOW_HOME
                    | ActionBar.DISPLAY_SHOW_TITLE);
    bar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
    bar.setCustomView(customView, new ActionBar.LayoutParams(
            ViewGroup.LayoutParams.MATCH_PARENT,
            ViewGroup.LayoutParams.MATCH_PARENT));
}

 @Override
    public boolean onCreateOptionsMenu(com.actionbarsherlock.view.Menu menu) {
        getSupportMenuInflater().inflate(R.menu.test_menu, menu);
        return super.onCreateOptionsMenu(menu);
    }
 }
0
وأضاف
هل لديك أي فكرة عن كيف يمكن أن تعمل مع المدمج في Android ActionBar؟
وأضاف المؤلف Bruno Bieri, مصدر

بقدر ما أعرف ، بمجرد اختيار العمل مع ActionBar ، تتم إضافته في مستوى أعلى (من هيكل واجهة المستخدم) من التخطيط الخاص بك.

بمعنى أنه لا يوجد لديك تحكم في مكان وضعه ، وما يوضع فوقه.

يبدأ التخطيط الخاص بك أسفل شريط الإجراءات وينتهي في الجزء السفلي من الشاشة.

في رأيي ، إذا وجدت طريقة لفعل ما تريد ، فسيكون ذلك غير مكتمل.

0
وأضاف
مرحبا dors ، شكرا لك على ردكم. أضفت صورة للعرض الهرمي. لا أزال أعتقد أنه من الممكن القيام بذلك.
وأضاف المؤلف Bruno Bieri, مصدر

بقدر ما أعرف ، بمجرد اختيار العمل مع ActionBar ، تتم إضافته في مستوى أعلى (من هيكل واجهة المستخدم) من التخطيط الخاص بك.

بمعنى أنه لا يوجد لديك تحكم في مكان وضعه ، وما يوضع فوقه.

يبدأ التخطيط الخاص بك أسفل شريط الإجراءات وينتهي في الجزء السفلي من الشاشة.

في رأيي ، إذا وجدت طريقة لفعل ما تريد ، فسيكون ذلك غير مكتمل.

0
وأضاف
مرحبا dors ، شكرا لك على ردكم. أضفت صورة للعرض الهرمي. لا أزال أعتقد أنه من الممكن القيام بذلك.
وأضاف المؤلف Bruno Bieri, مصدر

أنت تقول أن لديك مرجع تخطيط إطار المحتوى. هل يمكنك الحصول على وجهة نظر الوالدين؟ ألقاه إلى LinearLayout ثم إضافة العرض الخاص بك على الموضع الأول.

http://developer.android.com/reference/android /view/View.html#getParent٪28٪29

0
وأضاف

This hardly seems worth the bounty, but a previous question answers this: Getting admob above actionbarsherlock

الحيلة هي التبديل من استخدام شريط إجراءات Google إلى مكتبة actionbarsherlock. من المحتمل أن تكون هذه فكرة جيدة لتطبيقك على أي حال ، حيث تتيح لك دعم شريط الإجراءات على الإصدارات القديمة من Android.

يدعي المستخدم أن حصلت على ذلك للعمل.

0
وأضاف

This hardly seems worth the bounty, but a previous question answers this: Getting admob above actionbarsherlock

الحيلة هي التبديل من استخدام شريط إجراءات Google إلى مكتبة actionbarsherlock. من المحتمل أن تكون هذه فكرة جيدة لتطبيقك على أي حال ، حيث تتيح لك دعم شريط الإجراءات على الإصدارات القديمة من Android.

يدعي المستخدم أن حصلت على ذلك للعمل.

0
وأضاف
Android Sudan Community
Android Sudan Community
900 مشارك

كل اقتراحاتكم تتم مشاركتها هنا رابط القناة لتنزيل البرامج والالعاب من هنا @android_sudan تنبيه : القروب غير مختص إطلاقا بي الانترنت المجاني مثل ملفات الحاقن وماشابه يمنع منعا باتا نشر اي ملفات او برامج او اي شيء يتعلق بالانترنت المجان