AdMob-ті экранның жоғарғы жағында (жоғарыда) қалай Android Жарнама тақтасына қою керек?

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

  • yellow = ActionBar
  • қызыл = мазмұн
  • жасыл = AdMob

ұқсас сұрақ Мен таптым - жарнаманы экранның төменгі жағында орналастыру Әрекет тақтасы көрсетіледі. Бірақ әзірге оны экранның жоғарғы жағына қалай қою керектігін біле алмадым.

Мен осылай көрдім:

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» деп аталатын id бар. Жоғарыдағы кодымда FrameLayout «мазмұнына» қол жеткіздім, бірақ мен action_bar_container көрінісіне қатынаса алмадым. Олар иерархия деңгейінде болғандықтан (менің ойымша) бұл ActionBar көрінісіне қандай да бір жолмен кіруге болады.

enter image description here

Бірақ бұл жұмыс істемеді:

Without ActionBar displayed

Кез-келген идеяға қалай жетуге болатынын немесе қандай жұмыс істейтінін немесе қандай да бір жұмыс істемейтіні туралы ресми мәлімдеме.

5
@viperbone hi, сізде толық үлгідегі шешім коды бар ма? Менде қандай да бір мәселе болды және мұны үзінділер жасауға тырыстым
қосылды автор Gorets, көзі
@viperbone hi, сізде толық үлгідегі шешім коды бар ма? Менде қандай да бір мәселе болды және мұны үзінділер жасауға тырыстым
қосылды автор Gorets, көзі
Сіз портретте болсаңыз, онда сіз өзіңізге stackoverflow.com/questions/16002217/…
қосылды автор Lena Bru, көзі
Сіз портретте болсаңыз, онда сіз өзіңізге stackoverflow.com/questions/16002217/…
қосылды автор Lena Bru, көзі
Иә, орнына TabIndicator қолдандым, ол қарапайым тізім көрінісіне ұқсас қарап шығу пульті бар, ол іске асуы оңай, бірақ ол іс-әрекеттер тақтасы сияқты бірдей көрінбейді
қосылды автор Lena Bru, көзі
Иә, орнына TabIndicator қолдандым, ол қарапайым тізім көрінісіне ұқсас қарап шығу пульті бар, ол іске асуы оңай, бірақ ол іс-әрекеттер тақтасы сияқты бірдей көрінбейді
қосылды автор Lena Bru, көзі
Жауап үшін рақмет. Егер сізде NavigationMode TABS қосылған болса ғана шешіміңіз жұмыс істеп тұр ма? Сонымен, сіз ешқандай басқа шешім таба алмадыңыз және өзіңіздің тақырып жолағын жасадыңыз және мүлдем қолданылмадыңыз ба?
қосылды автор Bruno Bieri, көзі
Жауап үшін рақмет. Егер сізде NavigationMode TABS қосылған болса ғана шешіміңіз жұмыс істеп тұр ма? Сонымен, сіз ешқандай басқа шешім таба алмадыңыз және өзіңіздің тақырып жолағын жасадыңыз және мүлдем қолданылмадыңыз ба?
қосылды автор Bruno Bieri, көзі
@Gorets Жоқ, өкінішке орай, мен сізге көмектесе алмаймын.
қосылды автор Bruno Bieri, көзі

9 жауаптар

phoneDecorView алу үшін getRootView() кез келген көріністе немесе getWindow (). GetDecorView() пайдалана аласыз. Бір баласы бар - тік LinearLayout .

Орналасқан жеріңізді бірінші бала ретінде қосыңыз.

Назар аударыңыз, бұл жаман, жаман идея. Пайдаланушы тәжірибесі тұрғысынан, бұл барлық Дизайн нұсқауларына қарсы керемет ереуіл. Көптеген дизайнерлік себептер бойынша жоғарғы жағында әрекет ету жолағы болуы керек.

Екіншіден, бұл OEM-тақырыптық құрылғыларда бұзылуы мүмкін.

Үшіншіден, планшеттерде ландшафт туралы не деуге болады?

Қорыта айтқанда, иә, мүмкін, бірақ бұл қорқынышты идея. Мұны жасамаңыз.

6
қосылды
Сақ болыңыз! Бұл дұрыс Galaxy S3 mini үшін, бірақ менің Galaxy S4-де linearLayout орнына com.android.internal.widget.ActionBarOverlayLayout болды. Мен үшін жақсы шешімді сызуLayout-ды декларация мен мазмұнды көру арасында кірістіру болды.
қосылды автор Vladyslav Savchenko, көзі

phoneDecorView алу үшін getRootView() кез келген көріністе немесе getWindow (). GetDecorView() пайдалана аласыз. Бір баласы бар - тік LinearLayout .

Орналасқан жеріңізді бірінші бала ретінде қосыңыз.

Назар аударыңыз, бұл жаман, жаман идея. Пайдаланушы тәжірибесі тұрғысынан, бұл барлық Дизайн нұсқауларына қарсы керемет ереуіл. Көптеген дизайнерлік себептер бойынша жоғарғы жағында әрекет ету жолағы болуы керек.

Екіншіден, бұл OEM-тақырыптық құрылғыларда бұзылуы мүмкін.

Үшіншіден, планшеттерде ландшафт туралы не деуге болады?

Қорыта айтқанда, иә, мүмкін, бірақ бұл қорқынышты идея. Мұны жасамаңыз.

6
қосылды
Сақ болыңыз! Бұл дұрыс Galaxy S3 mini үшін, бірақ менің Galaxy S4-де linearLayout орнына com.android.internal.widget.ActionBarOverlayLayout болды. Мен үшін жақсы шешімді сызуLayout-ды декларация мен мазмұнды көру арасында кірістіру болды.
қосылды автор 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-мен жұмыс істеуді таңдағаннан кейін, ол сіздің жоспарыңыздан жоғары деңгейде (UI иерархиясында) қосылады.

Демек, сізде ол орналастырылған жерде және оның үстіне не болатыны туралы ешқандай бақылау жоқ.

Сіздің жоспарыңыз әрекет жолағының астында басталады және экранның төменгі жағында аяқталады.

Менің ойымша, егер сіз өзіңіз қалаған нәрсені істеуге мүмкіндік таба алсаңыз, ол өте нәзік болады.

0
қосылды
Hi dors, жауаптарыңыз үшін рахмет. Мен иерархия көрінісінің суреті қосылды. Дегенмен, мен мұны мүмкін деп ойлаймын.
қосылды автор Bruno Bieri, көзі

Менің білуімше, ActionBar-мен жұмыс істеуді таңдағаннан кейін, ол сіздің жоспарыңыздан жоғары деңгейде (UI иерархиясында) қосылады.

Демек, сізде ол орналастырылған жерде және оның үстіне не болатыны туралы ешқандай бақылау жоқ.

Сіздің жоспарыңыз әрекет жолағының астында басталады және экранның төменгі жағында аяқталады.

Менің ойымша, егер сіз өзіңіз қалаған нәрсені істеуге мүмкіндік таба алсаңыз, ол өте нәзік болады.

0
қосылды
Hi 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 іс-әрекеттер тақтасын әрекеттер тақтасының кітапханасына ауыстыру. Бұл, әрине, сіздің қолданбаңыздың жақсы идеясы, өйткені ол сізге Android құрылғыларының ескі құрылымдарындағы әрекеттер тақтасын қолдауға мүмкіндік береді.

Пайдаланушы жұмыс істеу үшін алғаны туралы мәлімдейді.

0
қосылды

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

Бұл амал - Google іс-әрекеттер тақтасын әрекеттер тақтасының кітапханасына ауыстыру. Бұл, әрине, сіздің қолданбаңыздың жақсы идеясы, өйткені ол сізге Android құрылғыларының ескі құрылымдарындағы әрекеттер тақтасын қолдауға мүмкіндік береді.

Пайдаланушы жұмыс істеу үшін алғаны туралы мәлімдейді.

0
қосылды