Android如何在ListActivity中使用Toolbar?
Android how to use Toolbar in ListActivity?
我做了一个ListActivity:
public class NoteListActivity extends ListActivity{
}
并且以下方法不再可用:
setSupportActionBar(toolbar);
getSupportActionBar().setHomeButtonEnabled(true);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
但我可以使用:
setActionBar(toolbar);
getActionBar().setHomeButtonEnabled(true);
getActionBar().setDisplayHomeAsUpEnabled(true);
请注意,我在同一项目的其他活动中使用了支持库。这意味着我添加了正确的 gradle 依赖项。
如何使用 ListActivity 和 android.support.v7.widget.Toolbar?
您不能在 ListActivity
中这样做。
如果您想访问 getSupportActionBar()
,您需要将 class 扩展为 AppCompatActivity
。
我的建议:不要用ListActivty,因为你想用ToolBar
。创建一个 Activity
,然后在 Activity
中只有 ListView
。它会工作得很好。
AppCompatActivity 是支持 v4 的 FragmentActivity 的直接子 class。阅读这篇文章
http://android-developers.blogspot.it/2015/04/android-support-library-221.html
so for your requirement, public class NoteListActivity extends AppCompatActivity {...}
只需更改您的依赖项,例如:
compile "com.android.support:appcompat-v7:22.1.0"
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
AppCompatCallback callback = new AppCompatCallback() {
@Override
public void onSupportActionModeStarted(ActionMode actionMode) {
}
@Override
public void onSupportActionModeFinished(ActionMode actionMode) {
}
@Nullable
@Override
public ActionMode onWindowStartingSupportActionMode(ActionMode.Callback callback) {
return null;
}
};
AppCompatDelegate delegate = AppCompatDelegate.create(this, callback);
delegate.onCreate(savedInstanceState);
delegate.setContentView(R.layout.saved_report_activity);
Toolbar toolbar= (Toolbar) findViewById(R.id.toolbar);
delegate.setSupportActionBar(toolbar);
delegate.getSupportActionBar().setDisplayShowHomeEnabled(true);
toolbar.setNavigationIcon(R.drawable.abc_ic_ab_back_mtrl_am_alpha);
toolbar.setNavigationOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
NavUtils.navigateUpFromSameTask(SavedReportActivity.this);
}
});
我能够通过添加支持库工具栏样式然后将样式添加到清单中的列表 activity 来解决这个问题。
在styles.xml中:
<style name="FullscreenActionBarStyle" parent="Widget.AppCompat.ActionBar">
在清单中
<activity android:theme="@style/FullscreenActionBarStyle"
android:name="@string/my_activity_name"
android:label="@string/my_activity_label"/>
这应该会在您的 activity 中添加一个工具栏,您可以在其中添加项目和处理事件等等...
我做了一个ListActivity:
public class NoteListActivity extends ListActivity{
}
并且以下方法不再可用:
setSupportActionBar(toolbar);
getSupportActionBar().setHomeButtonEnabled(true);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
但我可以使用:
setActionBar(toolbar);
getActionBar().setHomeButtonEnabled(true);
getActionBar().setDisplayHomeAsUpEnabled(true);
请注意,我在同一项目的其他活动中使用了支持库。这意味着我添加了正确的 gradle 依赖项。
如何使用 ListActivity 和 android.support.v7.widget.Toolbar?
您不能在 ListActivity
中这样做。
如果您想访问 getSupportActionBar()
,您需要将 class 扩展为 AppCompatActivity
。
我的建议:不要用ListActivty,因为你想用ToolBar
。创建一个 Activity
,然后在 Activity
中只有 ListView
。它会工作得很好。
AppCompatActivity 是支持 v4 的 FragmentActivity 的直接子 class。阅读这篇文章
http://android-developers.blogspot.it/2015/04/android-support-library-221.html so for your requirement,
public class NoteListActivity extends AppCompatActivity {...}
只需更改您的依赖项,例如:
compile "com.android.support:appcompat-v7:22.1.0"
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
AppCompatCallback callback = new AppCompatCallback() {
@Override
public void onSupportActionModeStarted(ActionMode actionMode) {
}
@Override
public void onSupportActionModeFinished(ActionMode actionMode) {
}
@Nullable
@Override
public ActionMode onWindowStartingSupportActionMode(ActionMode.Callback callback) {
return null;
}
};
AppCompatDelegate delegate = AppCompatDelegate.create(this, callback);
delegate.onCreate(savedInstanceState);
delegate.setContentView(R.layout.saved_report_activity);
Toolbar toolbar= (Toolbar) findViewById(R.id.toolbar);
delegate.setSupportActionBar(toolbar);
delegate.getSupportActionBar().setDisplayShowHomeEnabled(true);
toolbar.setNavigationIcon(R.drawable.abc_ic_ab_back_mtrl_am_alpha);
toolbar.setNavigationOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
NavUtils.navigateUpFromSameTask(SavedReportActivity.this);
}
});
我能够通过添加支持库工具栏样式然后将样式添加到清单中的列表 activity 来解决这个问题。
在styles.xml中:
<style name="FullscreenActionBarStyle" parent="Widget.AppCompat.ActionBar">
在清单中
<activity android:theme="@style/FullscreenActionBarStyle"
android:name="@string/my_activity_name"
android:label="@string/my_activity_label"/>
这应该会在您的 activity 中添加一个工具栏,您可以在其中添加项目和处理事件等等...