片段重叠appbar

时间:2016-06-13 18:30:47

标签: android-layout android-fragments android-studio android-appbarlayout

我有一个包含listView的重叠片段。布局在预览窗口中看起来很好,但是,当我在设备或模拟器上运行时,appbar会丢失。

主XML

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
tools:context=".GuiseMainActivity"
android:orientation="vertical">


<fragment
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_marginTop="@dimen/activity_horizontal_margin"
    android:id="@+id/fragmentProps"></fragment>

</RelativeLayout>

片段XML

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
android:gravity="top|center"
android:orientation="vertical">

<ListView
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/propCategoryListView"></ListView>

</LinearLayout>

主类

public class GuiseMainActivity extends FragmentActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    android.support.v4.app.FragmentManager fragmentManager =     getSupportFragmentManager();

    android.support.v4.app.FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();

    FragmentProps fragmentProps = new FragmentProps();
    fragmentTransaction.replace(android.R.id.content,fragmentProps);
    fragmentTransaction.commit();

}}

片段类

public class FragmentProps extends Fragment{

private View PropsFragmentView;

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

    PropsFragmentView = inflater.inflate(R.layout.fragment_props, container, false);
    String[] propsCategories ={"Recently used", "Popular", "New", "Personalities", "Moustaches / Beard", "Caps/ Hats", "Glasses", "Banners"};

    ListAdapter propsCategoryListAdapter = new ArrayAdapter<String>(getActivity(),android.R.layout.simple_list_item_1, propsCategories);
    ListView propCategoryListView = (ListView) PropsFragmentView.findViewById(R.id.propCategoryListView);

    propCategoryListView.setAdapter(propsCategoryListAdapter);
    propCategoryListView.setOnItemClickListener(new
        AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                String categoryPicked = "You Picked: " + String.valueOf(parent.getItemAtPosition(position));

                Toast.makeText(getActivity(), categoryPicked, Toast.LENGTH_LONG).show();
            }
        });

    return PropsFragmentView;
}}

Result

1 个答案:

答案 0 :(得分:0)

我找到了解决方案,MainActivity扩展AppCompatActivity然后在onCreate方法中添加这些行:

    getSupportActionBar().setDisplayShowHomeEnabled(true);
    getSupportActionBar().setIcon(R.drawable.applogo);
    getSupportActionBar().setTitle("");

谢谢你们。