GVKun编程网logo

android – 无法在导航抽屉的ActionBar中更改应用程序图标旁边的向上插入符号

8

本文将分享android–无法在导航抽屉的ActionBar中更改应用程序图标旁边的向上插入符号的详细内容,此外,我们还将为大家带来关于AndroidActionBar/工具栏消失在我的应用程序中、A

本文将分享android – 无法在导航抽屉的ActionBar中更改应用程序图标旁边的向上插入符号的详细内容,此外,我们还将为大家带来关于Android ActionBar /工具栏消失在我的应用程序中、Android NavigationView 导航抽屉的使用、Android UI ActionBar功能-Action Bar 左上角的向上或返回按钮、android – ActionBarCompat – 应用程序图标操作(点击)不能在4.0设备上工作的相关知识,希望对你有所帮助。

本文目录一览:

android – 无法在导航抽屉的ActionBar中更改应用程序图标旁边的向上插入符号

android – 无法在导航抽屉的ActionBar中更改应用程序图标旁边的向上插入符号

我目前正在尝试按照Google IO 2013指南实施新的NavigationDrawer.我正在使用ActionbarSherlock.代码运行良好.唯一的问题是,当拉出导航抽屉时,我无法切换应用程序图标旁边的“向上”插入符号.我在下面粘贴我的整个代码.请帮助.
public class MainActivity extends SherlockFragmentActivity {
   private DrawerLayout mDrawerLayout;
   private ListView mDrawerList;
   private ActionBarDrawerToggle mDrawerToggle;

   private CharSequence mDrawerTitle;
   private CharSequence mTitle;
   private String[] mPlanetTitles;

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

      mTitle = mDrawerTitle = getTitle();
      mPlanetTitles = getResources().getStringArray(R.array.planets_array);
      mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
      mDrawerList = (ListView) findViewById(R.id.drawer);

      mDrawerLayout.setDrawerShadow(R.drawable.drawer_shadow,GravityCompat.START);
      mDrawerList.setAdapter(new ArrayAdapter<String>(this,R.layout.drawer_list_item,mPlanetTitles));
      mDrawerList.setonItemClickListener(new DrawerItemClickListener());

      mDrawerToggle = new ActionBarDrawerToggle(this,/* host Activity */
      mDrawerLayout,/* DrawerLayout object */
      R.drawable.ic_drawer,/* nav drawer image to replace 'Up' caret */
      R.string.drawer_open,/* "open drawer" description for accessibility */
      R.string.drawer_close /* "close drawer" description for accessibility */
      ) {
         public void onDrawerClosed(View view) {
            getSupportActionBar().setTitle(mTitle);
            supportInvalidateOptionsMenu(); 
         }

         public void onDrawerOpened(View drawerView) {
            getSupportActionBar().setTitle(mDrawerTitle);
            supportInvalidateOptionsMenu(); 
         }
      };

      getSupportActionBar().setdisplayHomeAsUpEnabled(true);
      getSupportActionBar().setHomeButtonEnabled(true);


      mDrawerLayout.setDrawerListener(mDrawerToggle);

      if (savedInstanceState == null) {
         selectItem(0);
      }

      new Thread(new Runnable() {

        @Override
        public void run() {
             prefs = getPreferences(MODE_PRIVATE);
             opened = prefs.getBoolean(OPENED_KEY,false);
             if(opened == false)
             {
                     mDrawerLayout.openDrawer(mDrawerList);
             }
        }
    }).start();
   }

   @Override
   public boolean onCreateOptionsMenu(Menu menu) {
      MenuInflater inflater = getSupportMenuInflater();
      inflater.inflate(R.menu.main,menu);
      return super.onCreateOptionsMenu(menu);
   }

   @Override
   public boolean onPrepareOptionsMenu(Menu menu) {
      boolean drawerOpen = mDrawerLayout.isDrawerOpen(mDrawerList);
      menu.findItem(R.id.action_websearch).setVisible(!drawerOpen);
      return super.onPrepareOptionsMenu(menu);
   }

   @Override
   public boolean onoptionsItemSelected(final MenuItem item) {
      if (mDrawerToggle.onoptionsItemSelected(getMenuItem(item))) { 
         return true; 
      }

      switch (item.getItemId()) {
         case R.id.action_websearch:
            Intent intent = new Intent(Intent.ACTION_WEB_SEARCH);
            intent.putExtra(SearchManager.QUERY,getSupportActionBar().getTitle());
            if (intent.resolveActivity(getPackageManager()) != null) {
               startActivity(intent);
            } else {
               Toast.makeText(this,R.string.app_not_available,Toast.LENGTH_LONG).show();
            }
            return true;
         default:
            return super.onoptionsItemSelected(item);
      }
   }

   private android.view.MenuItem getMenuItem(final MenuItem item) {
      return new android.view.MenuItem() {
         @Override
         public int getItemId() {
            return item.getItemId();
         }

         public boolean isEnabled() {
            return true;
         }

         @Override
         public boolean collapseActionView() {
            return false;
         }

         @Override
         public boolean expandActionView() {
            return false;
         }

         @Override
         public ActionProvider getActionProvider() {
            return null;
         }

         @Override
         public View getActionView() {

            return null;
         }

         @Override
         public char getAlphabeticShortcut() {

            return 0;
         }

         @Override
         public int getGroupId() {

            return 0;
         }

         @Override
         public Drawable getIcon() {

            return null;
         }

         @Override
         public Intent getIntent() {

            return null;
         }

         @Override
         public ContextMenuInfo getMenuInfo() {

            return null;
         }

         @Override
         public char getNumericShortcut() {

            return 0;
         }

         @Override
         public int getorder() {

            return 0;
         }

         @Override
         public SubMenu getSubMenu() {

            return null;
         }

         @Override
         public CharSequence getTitle() {

            return null;
         }

         @Override
         public CharSequence getTitleCondensed() {

            return null;
         }

         @Override
         public boolean hasSubMenu() {

            return false;
         }

         @Override
         public boolean isActionViewExpanded() {

            return false;
         }

         @Override
         public boolean isCheckable() {

            return false;
         }

         @Override
         public boolean isChecked() {

            return false;
         }

         @Override
         public boolean isVisible() {

            return false;
         }

         @Override
         public android.view.MenuItem setActionProvider(ActionProvider actionProvider) {

            return null;
         }

         @Override
         public android.view.MenuItem setActionView(View view) {

            return null;
         }

         @Override
         public android.view.MenuItem setActionView(int resId) {

            return null;
         }

         @Override
         public android.view.MenuItem setAlphabeticShortcut(char alphaChar) {

            return null;
         }

         @Override
         public android.view.MenuItem setCheckable(boolean checkable) {

            return null;
         }

         @Override
         public android.view.MenuItem setChecked(boolean checked) {

            return null;
         }

         @Override
         public android.view.MenuItem setEnabled(boolean enabled) {

            return null;
         }

         @Override
         public android.view.MenuItem setIcon(Drawable icon) {

            return null;
         }

         @Override
         public android.view.MenuItem setIcon(int iconRes) {

            return null;
         }

         @Override
         public android.view.MenuItem setIntent(Intent intent) {

            return null;
         }

         @Override
         public android.view.MenuItem setNumericShortcut(char numericChar) {

            return null;
         }

         @Override
         public android.view.MenuItem setonActionExpandListener(OnActionExpandListener listener) {

            return null;
         }

         @Override
         public android.view.MenuItem setonMenuItemClickListener(OnMenuItemClickListener menuItemClickListener) {

            return null;
         }

         @Override
         public android.view.MenuItem setShortcut(char numericChar,char alphaChar) {

            return null;
         }

         @Override
         public void setShowAsAction(int actionEnum) {


         }

         @Override
         public android.view.MenuItem setShowAsActionFlags(int actionEnum) {

            return null;
         }

         @Override
         public android.view.MenuItem setTitle(CharSequence title) {

            return null;
         }

         @Override
         public android.view.MenuItem setTitle(int title) {

            return null;
         }

         @Override
         public android.view.MenuItem setTitleCondensed(CharSequence title) {

            return null;
         }

         @Override
         public android.view.MenuItem setVisible(boolean visible) {

            return null;
         }
      };
   }

   /* The click listner for ListView in the navigation drawer */
   private class DrawerItemClickListener implements ListView.OnItemClickListener {
      @Override
      public void onItemClick(AdapterView<?> parent,View view,int position,long id) {
         selectItem(position);
      }
   }

   private void selectItem(int position) {
      // update the main content by replacing fragments
      Fragment fragment = new PlanetFragment();
      Bundle args = new Bundle();
      args.putInt(PlanetFragment.ARG_PLANET_NUMBER,position);
      fragment.setArguments(args);

      FragmentManager fragmentManager = getSupportFragmentManager();
      fragmentManager.beginTransaction().replace(R.id.content_frame,fragment).commit();

      // update selected item and title,then close the drawer
      mDrawerList.setItemChecked(position,true);
      setTitle(mPlanetTitles[position]);
      mDrawerLayout.closeDrawer(mDrawerList);
   }

   @Override
   public void setTitle(CharSequence title) {
      mTitle = title;
      getSupportActionBar().setTitle(mTitle);
   }

   /**
    * When using the ActionBarDrawerToggle,you must call it during
    * onPostCreate() and onConfigurationChanged()...
    */

   @Override
   protected void onPostCreate(Bundle savedInstanceState) {
      super.onPostCreate(savedInstanceState);
      // Sync the toggle state after onRestoreInstanceState has occurred.
      mDrawerToggle.syncState();
   }

   @Override
   public void onConfigurationChanged(Configuration newConfig) {
      super.onConfigurationChanged(newConfig);
      // Pass any configuration change to the drawer toggls
      mDrawerToggle.onConfigurationChanged(newConfig);
   }

   /**
    * Fragment that appears in the "content_frame",shows a planet
    */
   public static class PlanetFragment extends SherlockFragment {
      public static final String ARG_PLANET_NUMBER = "planet_number";

      public PlanetFragment() {
         // Empty constructor required for fragment subclasses
      }

      @Override
      public View onCreateView(LayoutInflater inflater,ViewGroup container,Bundle savedInstanceState) {
         View rootView = inflater.inflate(R.layout.fragment_planet,container,false);
         int i = getArguments().getInt(ARG_PLANET_NUMBER);
         String planet = getResources().getStringArray(R.array.planets_array)[i];

      // change int imageId = getResources().getIdentifier(planet.toLowerCase(Locale.getDefault()),"drawable",getActivity().getPackageName());
         int imageId = getResources().getIdentifier("tempmap",getActivity().getPackageName());
         // change ((ImageView) rootView.findViewById(R.id.image)).setimageResource(imageId);
         ((ImageView) rootView.findViewById(R.id.image)).setimageResource(imageId);
         // change  getActivity().setTitle(planet);
         getActivity().setTitle("MapView");
         return rootView;
      }
   }
}

解决方法

如果你不需要移动3行(比如在gmail应用程序中),你可以添加:
<item name="homeAsUpIndicator">@drawable/ic_drawer</item>
<item name="android:homeAsUpIndicator">@drawable/ic_drawer</item>

在你的活动主题中.我更喜欢在我的应用程序中使用另一个库.

ic_drawer可以从这里下载:
http://developer.android.com/training/implementing-navigation/nav-drawer.html

Android ActionBar /工具栏消失在我的应用程序中

Android ActionBar /工具栏消失在我的应用程序中

所以我有一个应用程序.目前有3个活动…我正在用意图从另一个活动中启动活动

MainActivity > ChallongeLogin > ChallongeEvents

在我的MainActivity和ChallongeLogin中,应用程序顶部有一个大栏,列出了我的应用程序名称.但是,当我最终阅读ChallongeEvents时,该条消失了……我不记得做任何特别的事情使该条消失了.为什么消失了?

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.testing.testingapp">

    <uses-permission android:name="android.permission.INTERNET" />

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">

        <activity
            android:screenorientation="portrait"
            android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

        <activity
            android:screenorientation="portrait"
            android:name=".ChallongeLogin" />

        <activity
            android:screenorientation="portrait"
            android:name=".ChallongeEvents" />

    </application>

</manifest>

解决方法:

根据您的要求,您必须扩展AppCompatActivity而不是Activity.

public class ActivityName extends AppCompatActivity {
  // ...
}

AppCompatActivity is from the appcompat-v7 library. Principally, this
offers a backport of the action bar. Since the native action bar was
added in API Level 11, you do not need AppCompatActivity for that.
However, current versions of appcompat-v7 also add a limited backport
of the Material Design aesthetic, in terms of the action bar and
varIoUs widgets. There are pros and cons of using appcompat-v7, well
beyond the scope of this specific Stack Overflow answer.

参考

07001

Android NavigationView 导航抽屉的使用

1.抽屉布局(drawerlayout)

activity_main.xml中的总体布局设置为drawerlayout

2.拖入NavigationView组件(在container中)

3.给NavigationView组件设置头部布局

<1>在app--->src--->main-->res-->layout中新建NavigationView组件headlayout对应的head_layout.xml布局文件

<2>在activity_main.xml文件中添加head_layout.xml的对应关系

app:headerLayout="@layout/head_layout"

4.给NavigationView组件添加菜单

<1>app--->src--->main--->res,选中res,右击new--->android resource file

<2>设置抽屉组件在屏幕的左侧

android:layout_gravity="left"

<3>在activity_main.xml文件中添加menu_navi.xml的对应关系

app:menu="@menu/menu_navi"

<4>navigation总体xml代码设置

<android.support.design.widget.NavigationView
        android:id="@+id/navi"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_gravity="left"
        app:headerLayout="@layout/head_layout"
        app:menu="@menu/menu_navi" />

5.java后台代码

public class MainActivity extends AppCompatActivity {
    NavigationView navigationView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        navigationView=findViewById(R.id.navi); //天坑:navigation一定要初始化
        navigationView.setItemIconTintList(null);  //设置navigationView菜单的图标

        View view=navigationView.getHeaderView(0);  //获取抽屉的头部
        ImageView imageView=view.findViewById(R.id.imageView); //获取头部的图片组件
        imageView.setonClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Toast.makeText(MainActivity.this,"您选择的是头部组件",Toast.LENGTH_SHORT).show();
            }
        });

        final TextView textView=view.findViewById(R.id.textView3);
        navigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {
            @Override
            public boolean onNavigationItemSelected(@NonNull MenuItem menuItem) {
                textView.setText("您选择的是:"+menuItem.getTitle().toString());
                return true;
            }
        });

    }
}

 

Android UI ActionBar功能-Action Bar 左上角的向上或返回按钮

Android UI ActionBar功能-Action Bar 左上角的向上或返回按钮

ActionBar在左上角还提供了一个向上或返回的按钮,默认情况下是隐藏的需要在代码中开启:


官方文档:http://wear.techbrood.com/training/basics/actionbar/adding-buttons.html#UpNav

向上功能:

先打开功能选项,设置ActionBar的DisplayHomeAsUpEnabled=true:

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        getActionBar().setDisplayHomeAsUpEnabled(true);
    }
添加一个Activity为ParentActivity 同时新建ParentActivity的布局文件:

public class ParentActivity extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.parent_activity);
	}
}
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >
    
		<TextView android:layout_width="match_parent"
		    android:layout_height="match_parent"
		    android:text="parent activity">
		    
		</TextView>

</LinearLayout>

然后在AndroidManifest.xml文件中配置向上功能:

详细请查看上方的官方说明文档; 

返回功能:

先打开功能选项,设置ActionBar的DisplayHomeAsUpEnabled=true:

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        getActionBar().setDisplayHomeAsUpEnabled(true);
    }


然后实现onOptionsItemSelected方法,当他选择按钮的时候,如果是返回键则退出程序:

@Override
    public boolean onOptionsItemSelected(MenuItem item) {
    	switch (item.getItemId()) {
		case android.R.id.home:
			finish();
			break;

		default:
			break;
		}
    	return super.onOptionsItemSelected(item);
    }





android – ActionBarCompat – 应用程序图标操作(点击)不能在4.0设备上工作

android – ActionBarCompat – 应用程序图标操作(点击)不能在4.0设备上工作

我有 Android ActionBarCompat项目的这个问题:在Android 4.0的模拟器上,单击应用程序图标不会导致任何onoptionsItemSelected事件,而它适用于所有其他操作系统版本.

任何输入都非常感谢!

解决方法

您是否看到应用图标有任何触摸反馈? (当你按下它会发光吗?)

由于许多活动不使用操作栏主页按钮,因此在Android 4.0上运行的API 14应用程序中,默认情况下禁用. (这样,用户不要尝试按它,看到它发光,并想知道为什么没有发生.)想要使用这个应用程序应该调用ActionBar#setHomeButtonEnabled(true).

我们应该修改ActionBarCompat样本,使之更清楚.让您开始运行的一个简单方法是修改ActionBarHelperICS.java并添加以下内容:

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    mActivity.getActionBar().setHomeButtonEnabled(true);
}

在一个应用程序中,您需要更多的控制来打开和关闭此功能,您将需要进行进一步的更改.

今天关于android – 无法在导航抽屉的ActionBar中更改应用程序图标旁边的向上插入符号的介绍到此结束,谢谢您的阅读,有关Android ActionBar /工具栏消失在我的应用程序中、Android NavigationView 导航抽屉的使用、Android UI ActionBar功能-Action Bar 左上角的向上或返回按钮、android – ActionBarCompat – 应用程序图标操作(点击)不能在4.0设备上工作等更多相关知识的信息可以在本站进行查询。

本文标签: