- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我目前正在开发需要支持 Api10+ 的 Android 应用我按照许多教程来设置 appcompat 以管理创建操作栏。
链接如下: https://stackoverflow.com/a/21291156/2789106 http://developer.android.com/guide/topics/ui/actionbar.html
只有三件事我不能做。
drawerToggle
时传递的图像不同))collapseActionView()
已在 API 14 中实现)这是我的代码:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// ActionBarDrawerToggle ties together the the proper interactions
// between the sliding drawer and the action bar app icon
mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout,
R.drawable.ic_navigation_drawer,
R.string.navigation_drawer_open,
R.string.navigation_drawer_close) {
/** Called when a drawer has settled in a completely closed state. */
public void onDrawerClosed(View view) {
supportInvalidateOptionsMenu(); // creates call to onPrepareOptionsMenu()
}
/** Called when a drawer has settled in a completely open state. */
public void onDrawerOpened(View drawerView) {
supportInvalidateOptionsMenu(); // creates call to onPrepareOptionsMenu()
}
};
// Set the drawer toggle as the DrawerListener
mDrawerLayout.setDrawerListener(mDrawerToggle);
// Restore app state if any
if (savedInstanceState == null) {
mLeftMenuContainer = (LinearLayout) findViewById(R.id.left_menu_container);
mLeftMenuContainer.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View arg0, MotionEvent arg1) {
// return TRUE to avoid tap on back view
return true;
}
});
mDrawerLayout.closeDrawer(mLeftMenuContainer);
}
// enable ActionBar app icon to behave as action to toggle nav drawer
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setHomeButtonEnabled(true);
getSupportActionBar().setDisplayShowTitleEnabled(true);
getSupportActionBar().setLogo(R.drawable.ic_action_bar_logo);
}
/* Called whenever we call supportInvalidateOptionsMenu() */
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
// If the nav drawer is open, hide action items related to the content
// view
if (mDrawerLayout != null && mLeftMenuContainer != null) {
boolean drawerOpen = mDrawerLayout.isDrawerOpen(mLeftMenuContainer);
for (int i = 0; i < menu.size(); i++) {
menu.getItem(i).setVisible(!drawerOpen);
}
}
return super.onPrepareOptionsMenu(menu);
}
@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);
mDrawerToggle.onConfigurationChanged(newConfig);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
mMenu = menu;
// Inflate the menu; this adds items to the action bar if it is present.
// enable ActionBar app icon to behave as action to toggle nav drawer
getMenuInflater().inflate(R.menu.main, menu);
MenuItem searchItem = menu.findItem(R.id.action_bar_search);
final SearchView searchView = (SearchView) MenuItemCompat.getActionView(searchItem);
SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
SearchableInfo info = searchManager.getSearchableInfo(getComponentName());
searchView.setSearchableInfo(info);
AutoCompleteTextView searchText = (AutoCompleteTextView) searchView.findViewById(android.support.v7.appcompat.R.id.search_src_text);
searchText.setHintTextColor(getResources().getColor(R.color.color_action_bar_search_text));
searchText.setTextColor(getResources().getColor(R.color.color_action_bar_search_text));
searchView.setIconifiedByDefault(true);
// Getting the 'search_plate' LinearLayout.
View searchPlate = searchView.findViewById(android.support.v7.appcompat.R.id.search_plate);
// Setting background of 'search_plate' to personal defined drawable.
if (searchPlate != null) {
searchPlate
.setBackgroundResource(R.drawable.texfield_search_view_theme);
}
// Set search view clear icon
ImageView searchIconClearView = (ImageView) searchView
.findViewById(android.support.v7.appcompat.R.id.search_close_btn);
if (searchIconClearView != null) {
Log.v(LOG_TAG, "Should Change Clear Icon here");
searchIconClearView
.setImageResource(R.drawable.ic_action_bar_clear_search);
}
// Set search view Magnifier icon
ImageView searchIcon = (ImageView) searchView.findViewById(android.support.v7.appcompat.R.id.search_mag_icon);
if (searchIcon != null) {
Log.v(LOG_TAG, "Should Change Search Icon here");
searchIcon.setImageResource(R.drawable.ic_action_bar_back);
}
// Set on click to open a fragment, not a activity
final SearchView.OnQueryTextListener queryTextListener = new SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextChange(String newText) {
// Do something
return true;
}
@Override
public boolean onQueryTextSubmit(String query) {
Log.v(LOG_TAG, "Performed search with: " + query);
searchView.clearFocus();
return true;
}
};
searchView.setOnQueryTextListener(queryTextListener);
MenuItemCompat.setOnActionExpandListener(searchItem, new OnActionExpandListener() {
@Override
public boolean onMenuItemActionCollapse(MenuItem arg0) {
mMenu.findItem(R.id.action_bar_cart).setVisible(true);
return true;
}
@Override
public boolean onMenuItemActionExpand(MenuItem arg0) {
getSupportActionBar().setIcon(R.drawable.ic_action_bar_logo);
mMenu.findItem(R.id.action_bar_cart).setVisible(false);
return true;
}
});
return super.onCreateOptionsMenu(menu);
}
如果我做错了什么,有人可以告诉我吗?
-- 编辑--
我设法解决了问题 1 和 2:
您需要做的是在您的主题中定义 homeUpIcon。因此,如果您像我一样支持 API 10:
<style name="Theme.MyTheme" parent="@style/Theme.AppCompat.Light">
<item name="searchViewSearchIcon">@drawable/your_search_icon</item>
<!-- API 13- Support -->
<item name="homeAsUpIndicator">@drawable/your_back_icon</item>
<!-- API 14+ -->
<item name="android:homeAsUpIndicator">@drawable/your_back_icon</item>
</style>
发现于
ActionBarSherlock: changing homeAsUpIndicator doesn't work
和 Changing the background drawable of the searchview widget
最重要的问题仍然悬而未决,如果有人知道答案,请在这里发布!
最佳答案
试试这个:
public boolean onQueryTextSubmit(String query) {
MenuItemCompat.collapseActionView(searchItem);
return false;
}
关于Android appcompat API 10 折叠操作 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22621122/
升级/重构到 AndroidX 后我收到这个错误androidx.appcompat.appcompat.R 不存在在代码中显示 appcompat 符号无法解析 最佳答案 我遇到了和你一样的错误信息
我在使用 AppCompat 时突然想到,我一直在布局 XML 文件中使用 Button 而不是 android.support.v7.widget.AppCompatButton 之类的东西。我通过
我刚刚升级到 AppCompat v23,发现 setSupportProgressBarIndeterminateVisibility 已弃用。但是,我无法找到替代方案,文档对此似乎非常薄弱。 如果
可以像这样使用 CoordinatorLayout 和自定义 FloatingActionButton: Futuresimple - FloatingActionButton 或 Clans - F
我正忙着尝试实现支持库,以便我可以使用 AppCompatActivty 据我所知,我把所有东西都放在了正确的地方。但我仍然收到错误。 样式.xml
有以下 Theme.AppCompat 类: Theme.AppCompat Theme.AppCompat.Light Theme.AppCompat.Light.DarkActionBar The
我更新了compileSDkversion从 27 日到 28 日。 添加于 gradle.properties文件: android.useAndroidX=true android.enableJ
我正在尝试构建一个 react native 应用程序,但它返回此错误: > Could not resolve all task dependencies for configuration ':a
我正在迁移到 androidX,但我收到: Could not find androidx.appcompat:appcompat:1.0.2. Required by: project :a
我正在尝试升级我的 gradle。当我将 appcompat 从 1.0.2 更新到 1.1.0 时,我的 webview 在某些手机上不再工作。 (API 21 和 22)。 有没有一种聪明的方法可
我是 Android 开发的绝对初学者,并尝试构建测试自动化来测试移动应用程序。经过数周的 IntelliJ 设置后,我仍然面临问题,其中包括以下问题。 因为我使用的是 SDK ver 29,我被告知
我正在使用 v7 appcompat 支持库。操作项在 actionBar 中显示的工作在较新或较旧的设备上都很好。 但是,我没有在 API 7 上得到溢出。例如: appco
最新链接app-compat这是1.1.0 . 将我的应用程序升级到最新版本后 app-compat我的语言设置在 以下的手机上停止工作API 24 (粗略地说,肯定不适用于 API 21 及以下版本
这里的 iOS 开发人员被扔进了 Android 项目的狼群中。我收到一些错误代码,它们都表示类似于 ThemeUtils: View class androidx.appcompat.widget.
这里的 iOS 开发人员被扔进了 Android 项目的狼群中。我收到一些错误代码,它们都表示类似于 ThemeUtils: View class androidx.appcompat.widget.
我最近将我的应用程序升级为 Material 主题。但是,我在 4.2.2 三星平板电脑上遇到崩溃。堆栈跟踪(在下面发布)告诉我我没有使用 Theme.AppCompat 的后代,尽管我相信我是。该应
我正在使用 AppCompat 22.1.1 Base.Widget.AppCompat.Button 和 Widget.AppCompat.Button 有什么区别? 最佳答案 在 AppCompa
我已经在多个地方看到了这个问题。问题似乎与过去的gradle版本3和android studio版本3的更新有关。每当我将依赖项更改为较新的版本时,我都会不断收到错误消息: Could not fin
我已将此资源添加到我的项目中,它向我显示了一个警告。 我该如何解决? The problem still continues (I don't know, if I
我为建议行定义了一个布局,但在将 AppCompat 库更新到 22.1 后,忽略了 styles.xml 中定义的布局。 这是我的 styles.xml 文件(已简化): @style/S
我是一名优秀的程序员,十分优秀!