Jon*_*nik 24 android android-icons android-actionbar navigation-drawer android-homebutton
至少Gmail和Youtube Android应用程序使用侧边菜单(导航抽屉?),通过滑动或单击应用程序图标(主页按钮)打开:
屏幕截图中的菜单指示符/图标是Android SDK的现成部分吗?(或谷歌在他们的应用程序中使用的自定义图标?)无论如何,最简单的方法是让你的主页按钮看起来像这样,就像打开一个菜单一样?
(targetSdkVersion
18; minSdkVersion
14)
终于搞定了.少了什么对我来说是1)实际图标和2)递延调用syncState()
上ActionBarDrawerToggle
.
har*_*ore 33
要在应用程序中创建类似的实现/外观,您应该使用ActionBarDrawerToggle
ActionBar主页按钮旁边的自定义图标作为指示符.例如 :
import android.app.ActionBar;
import android.support.v4.app.ActionBarDrawerToggle;
import android.support.v4.widget.DrawerLayout;
private void setUpDrawerToggle(){
ActionBar actionBar = getActionBar();
actionBar.setDisplayHomeAsUpEnabled(true);
actionBar.setHomeButtonEnabled(true);
// ActionBarDrawerToggle ties together the the proper interactions
// between the navigation drawer and the action bar app icon.
mDrawerToggle = new ActionBarDrawerToggle(
this, /* host Activity */
mDrawerLayout, /* DrawerLayout object */
R.drawable.ic_drawer, /* nav drawer image to replace 'Up' caret */
R.string.navigation_drawer_open, /* "open drawer" description for accessibility */
R.string.navigation_drawer_close /* "close drawer" description for accessibility */
) {
@Override
public void onDrawerClosed(View drawerView) {
invalidateOptionsMenu(); // calls onPrepareOptionsMenu()
}
@Override
public void onDrawerOpened(View drawerView) {
invalidateOptionsMenu(); // calls onPrepareOptionsMenu()
}
};
// Defer code dependent on restoration of previous instance state.
// NB: required for the drawer indicator to show up!
mDrawerLayout.post(new Runnable() {
@Override
public void run() {
mDrawerToggle.syncState();
}
});
mDrawerLayout.setDrawerListener(mDrawerToggle);
}
Run Code Online (Sandbox Code Playgroud)
R.drawable.ic_drawer
实际上用作指示符的图标在哪里.您可以在Android Asset Studio中找到它; 请参阅导航抽屉指示器.
参考
Jon*_*nik 10
Android-Developer和HpTerm在正确的方向上帮助了我
ic_drawer.png
图标(→ Android Asset Studio)现在,不幸的是,如下所示创建ActionBarDrawerToggle似乎还不够.至少在我的Nexus 7(API 18)测试设备上.
drawerToggle = new ActionBarDrawerToggle(this,
drawerLayout,
R.drawable.ic_navigation_drawer,
R.string.side_menu_open,
R.string.side_menu_closed) {
// ...
};
Run Code Online (Sandbox Code Playgroud)
我找到了一种让指示器出现的方法:setHomeAsUpIndicator()
.缺点:该方法是在API级别18中添加的.
@Override
protected void onCreate(Bundle savedInstanceState) {
// ...
getActionBar().setDisplayHomeAsUpEnabled(true); // also required
if (Build.VERSION.SDK_INT >= 18) {
getActionBar().setHomeAsUpIndicator(
getResources().getDrawable(R.drawable.ic_navigation_drawer));
}
}
Run Code Online (Sandbox Code Playgroud)
所以现在问题仍然存在:如何使这个(在我的情况下)API级别14到17工作?
我在4.1.2(API 16)设备上验证了ic_drawer
图标没有显示.随着setDisplayHomeAsUpEnabled(true)
我获得正常的"主页"图标(小箭头指向左侧),没有它,我的应用程序图标留下的空间仍为空白.
使用Android-Developer的编辑版本来解决问题.
非常奇怪的是,我的ActionBarDrawerToggle初始化代码中缺少的是:
// Defer code dependent on restoration of previous instance state.
drawerLayout.post(new Runnable() {
@Override
public void run() {
mDrawerToggle.syncState();
}
});
Run Code Online (Sandbox Code Playgroud)
与包括,调用setHomeAsUpIndicator()
是不是需要.
归档时间: |
|
查看次数: |
38442 次 |
最近记录: |