我正在Android中开发一个应用程序,我在片段中实现ActionBar时遇到问题。
这是我片段的代码:
public class TopicListFragment extends ListFragment {
private LinkedList<Topic> mTopics;
private static final String TAG = "TopicListFragment";
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setHasOptionsMenu(true);
mTopics = TopicLab.get(getActivity()).getTopics();
ArrayAdapter<Topic> adapter = new TopicAdapter(mTopics);
setListAdapter(adapter);
}
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
Log.d(TAG, "Menu created");
super.onCreateOptionsMenu(menu, inflater);
inflater.inflate(R.menu.fragment_topic_list, menu);
}
这是meny布局的XML文件:
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools" >
<item android:id="@+id/menu_item_new_topic"
android:icon="@android:drawable/ic_menu_add"
android:title="@string/new_topic"
app:showAsAction="ifRoom"></item>
</menu>
当我运行应用程序时,ActionBar没有显示,如果我按下智能手机上的menù按钮,它会出现在一个只有标题的丑陋的botton线上。
正如你在Fragment类中看到的那样,我已经插入了一行调试,但它只在我按下menù按钮时打印消息,而不是在创建Activity时打印消息。
我该怎么做才能修复它?每个答案都将非常感谢!谢谢!
EDIT ----
如上所述,这是styles.xml文件
<resources>
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
</style>
</resources>
答案 0 :(得分:0)
将此代码放在xml文件中
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:minHeight="?attr/actionBarSize"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light">
以下代码中包含片段的活动
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
if (toolbar != null) {
setSupportActionBar(toolbar);
}
以你的风格添加
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
答案 1 :(得分:0)
很久以后,如果您在使用旧版本的操作栏测试中遇到差距,这是一个安全选项:
final RelativeLayout mainLayout = view.findViewById(R.id.main_layout);
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) {
Rect rectangle = new Rect();
Window window = activity.getWindow();
window.getDecorView().getWindowVisibleDisplayFrame(rectangle);
mainLayout.setPadding(0, rectangle.top, 0, 0);
}