2015-05-04 87 views
0

我既不能以编程方式更改自定义操作栏的标题,也不能将简档图像添加到操作栏。我无法理解我的实现错误。下面是我的代码:以编程方式更改自定义操作栏的标题

actionbar_home

<RelativeLayout 
    android:layout_width="match_parent" 

    android:layout_height="wrap_content" 

    android:background="@color/tabbackground" 
    android:layout_marginLeft="5dp" 
    android:layout_marginRight="5dp" 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto"> 
    <ImageView 
     xmlns:app="http://schemas.android.com/apk/res-auto" 
     android:id="@+id/profileImageActionBar" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_centerVertical="true" 
     android:visibility="visible" 
     app:border_width="1dp" 
     app:border_color="#FFFFFF" 
     android:layout_alignParentLeft="true" 

     /> 


    <TextView 
     android:id="@+id/actionbar_title" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_centerHorizontal="true" 
     android:layout_centerVertical="true" 
     android:gravity="center" 
     android:maxLines="1" 
     android:singleLine="true" 
     android:text="Home" 
     android:textColor="@color/white" 
     android:textSize="22sp"/> 
</RelativeLayout> 

代码 -

protected void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.activity_main); 

      mCamera=(ImageButton)findViewById(R.id.menu_camera); 
      mMimic=(ImageButton)findViewById(R.id.menu_mimic); 
      mMeme=(ImageButton)findViewById(R.id.menu_makememe); 
      mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout); 
      mDrawerList = (ListView) findViewById(R.id.left_drawer); 
      mMenuButton = (ImageButton) findViewById(R.id.menu_menu); 
      mMenuBackground=(View)findViewById(R.id.menu_white_background); 
      header=getLayoutInflater().inflate(R.layout.header, null); 
      mProfilePic = (ImageView) findViewById(R.id.circleView); 
      mProfileName = (TextView) findViewById(R.id.userName); 
      mmenuCamera=(View)findViewById(R.id.menu_camera_box); 
      mmenuMimic=(View)findViewById(R.id.menu_mimiclayout); 
      mmenuMeme=(View)findViewById(R.id.menu_make_meme); 
      transparent=(View)findViewById(R.id.blacktreansparent); 

      LayoutInflater mInflater = LayoutInflater.from(this); 
      StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build(); 
      StrictMode.setThreadPolicy(policy); 
      View mCustomView = mInflater.inflate(R.layout.actionbar_home, null); 

      profileImage=(ImageView)mCustomView.findViewById(R.id.profileImageActionBar); 
      mFaceBookActionBarPicture = (ProfilePictureView)mCustomView.findViewById(R.id.faceboolUserProfilePicture); 

      actionBarTitle=(TextView)mCustomView.findViewById(R.id.actionbar_title); 
      getSupportActionBar().setCustomView(R.layout.actionbar_home); 
      getSupportActionBar().setDisplayHomeAsUpEnabled(true); 
      getSupportActionBar().setHomeButtonEnabled(true); 
      getSupportActionBar().setDisplayShowHomeEnabled(true); 
      getSupportActionBar().setDisplayShowTitleEnabled(false); 
      getSupportActionBar().setDisplayShowCustomEnabled(true); 
actionBarTitle.setText("PG"); 
      options = new DisplayImageOptions.Builder() 
        .showImageOnLoading(android.R.color.transparent) 
        .showImageForEmptyUri(android.R.color.transparent) 
        .showImageOnFail(android.R.color.transparent) 
        .cacheInMemory(true) 
        .cacheOnDisk(true) 
        .considerExifParams(true) 
        .bitmapConfig(Bitmap.Config.RGB_565) 
        .build(); 
      handler= new Handler(); 
      ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(
        getApplicationContext()) 
        .defaultDisplayImageOptions(options) 
        .memoryCache(new WeakMemoryCache()) 
        .discCacheSize(100 * 1024 * 1024).build(); 
      ImageLoader.getInstance().init(config); 

      background=(ImageView)findViewById(R.id.backgroundView); 
      mFaceBookProfilePictureView = (ProfilePictureView) findViewById(R.id.faceboolUserProfilePicture); 
      try { 
       setProfile(mProfilePic, mProfileName, mFaceBookProfilePictureView); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 

      mDrawerList.setAdapter(new CustomAdapter(this, mdrawerTitles)); 
      setupAnimations(); 
      // getSupportActionBar().setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM); 


      mDrawerList.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
                @Override 
                public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
                if(position==0) 
                { 

                 Intent viewAboutVideoIntent = new Intent(getApplicationContext(), YouTubeActivity_.class); 
                 startActivity(viewAboutVideoIntent); 
                } 
                 else if(position==1) 
                { 
                 GApplication.getInstance().triggerShareApp(MainActivity.this); 
                } 
                 else if(position==2) 
                { 
                 GApplication.getInstance().connectUsFaceBookPage(MainActivity.this); 
                } 
                else if(position==3) 
                { 
                 Session session = Session.getActiveSession(); 
                 if (session != null) 
                 { 
                  Session.getActiveSession().closeAndClearTokenInformation(); 
                  Session.getActiveSession().close(); 
                  Session.setActiveSession(null); 
                 } 
                 else 
                 { 
                  session = new Session.Builder(GApplication.getInstance()).setApplicationId(getResources().getString(R.string.app_id)).build(); 
                  if (session != null) 
                  { 
                   Session.setActiveSession(session); 
                   session.closeAndClearTokenInformation(); 
                   session.close(); 
                   Session.setActiveSession(null); 
                  } 
                 } 

                 Intent i=new Intent(getApplicationContext(),IntroVideoActivity_.class); 
                 i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK); 
                 G.FACEBOOK_USER_PROFILE_PIC.write(null); 
                 G.FACEBOOK_USER_NAME.write(null); 
                 G.USER_NAME.write(null); 
                 G.USER_EMAILID.write(null); 
                 G.GOOGLEPLUS_USER_PROFILE_PIC.write(null); 
                 G.FIRSTTIME_LAUNCH.write(true); 
                 startActivity(i); 
                 finish(); 
                } 
                } 
               }); 



      mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout); 
      mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout, 
        R.drawable.ic_drawer, R.string.drawer_open, R.string.drawer_close) { 

       public void onDrawerClosed(View view) { 
        super.onDrawerClosed(view); 

        invalidateOptionsMenu(); 
       } 

       public void onDrawerOpened(View drawerView) { 
        super.onDrawerOpened(drawerView); 

        invalidateOptionsMenu(); 
       } 
      }; 

      mDrawerLayout.setDrawerListener(mDrawerToggle); 

      final ViewPager pager = (ViewPager) findViewById(R.id.viewPager); 
      pager.setAdapter(new MyPagerAdapter(getSupportFragmentManager())); 
      final PagerSlidingTabStrip tabs = (PagerSlidingTabStrip) findViewById(R.id.tabs); 
      tabs.setViewPager(pager); 

      tabs.setOnPageChangeListener(new ViewPager.OnPageChangeListener() { 
       @Override 
       public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { 

       } 

       @Override 
       public void onPageSelected(int position) { 
        tabs.setNextFocusRightId(position); 
        switch(position) { 
         case 0: 


          actionBarTitle.setText("Home"); 

          break; 
         case 1: 


          actionBarTitle.setText("PG"); 
          break; 
         case 2: 


          actionBarTitle.setText("AG"); 
          break; 
         case 3: 


          actionBarTitle.setText("VG"); 
          break; 
         case 4: 

          actionBarTitle.setText("MG"); 
          break; 
         case 5: 


          actionBarTitle.setText("Ch"); 
          break; 
         case 6: 


          actionBarTitle.setText("Gi"); 
          break; 
         case 7: 


          actionBarTitle.setText("Fl"); 
          break; 
        } 

       } 

       @Override 
       public void onPageScrollStateChanged(int state) { 

       } 

      }); 
      mIsMenuOpen = false; 
      mMenuButton.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View view) { 
        if (mIsMenuOpen) 
        { 
         transparent.setVisibility(View.GONE); 
         mMenuButton.startAnimation(mCloseAnimation); 

         mmenuCamera.startAnimation(mSlideOutAnimation); 
         mmenuMimic.startAnimation(mSlideOutAnimation); 
         mmenuMeme.startAnimation(mSlideOutAnimation); 

         mMenuBackground.startAnimation(mFadeOutAnimation); 


         mIsMenuOpen = false; 
        } 
        else 
        { 
         transparent.setVisibility(View.VISIBLE); 
         mMenuButton.startAnimation(mOpenAnimation); 

         mmenuCamera.startAnimation(mSlideInAnimation); 
         mmenuMimic.startAnimation(mSlideInAnimation); 
         mmenuMeme.startAnimation(mSlideInAnimation); 

         mMenuBackground.startAnimation(mFadeInAnimation); 


         mIsMenuOpen = true; 
        } 
       } 
      }); 

     } 
+0

不相关,但请不要在onCreate方法上放置太多代码。 –

+0

运行应用程序时,您的操作栏的标题是什么? “家”还是“PG”? – Singed

+0

@Singed Home ... –

回答

2

在你的情况,你两次膨胀的看法。

在这一行:

View mCustomView = mInflater.inflate(R.layout.actionbar_home, null); 

这行:

getSupportActionBar().setCustomView(R.layout.actionbar_home); 

所以,当访问“actionbarTitle”你引用的第一个通货膨胀,而不是附着在动作条(实际视图因为setCustomView(int id)方法使视图本身膨胀,请参阅docs)。

为了访问实际标题您可能需要使用:

getSupportActionBar().setCustomView(mCustomView); 

或者初始化“mCustomView”视图,设置种质资源的动作条后:

getSupportActionBar().setCustomView(R.layout.actionbar_home); 
mCustomView = getSupportActionBar().getCustomView(); 
相关问题