如何在寻呼机中显示单独的片段

时间:2013-11-03 12:06:38

标签: android android-fragments android-dialogfragment fragmentpageradapter

根据ADT中默认的“固定标签+刷卡”活动,我的FragmentActivityFragmentPagerAdapter

FragementPagerAdapter非常简单(只根据被调用的位置返回一个特定的片段),而FragmentActivity本身也是Eclipse提供的“示例”代码中的默认值。最后附加了“有趣的”部分,但这就是它的外观(显然是出于问题目的简化)

现在在各种片段之一中,我有一个按钮,应该显示一些信息和图片/图片:一些不属于选项卡视图的东西。

最好的方法是什么?

我想过要么刚刚开始一项新活动,但我们不赞成使用片段进行构建,所以我放弃了这个选项。然后我可以制作一个“随机”片段来展示,但我不确定如何实现与寻呼机相关的 - >这实际上可能是最好的方式。

我能想出的是展示DialogFragment。我实际上是这样实现的:

首先使用此onCreateView创建一个DialogFragment:

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

    LinearLayout v = (LinearLayout) inflater.inflate(R.layout.entry, container, false);
    //set image
    return v;
}

并显示如下:

fragment.show(getSupportFragmentManager(), "dialog");

xml是stackoverflow上建议的简单linearLayout。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:minWidth="1000dp"  
    android:minHeight="1000dp"> 

    <ImageView
        android:id="@+id/image"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:contentDescription="@string/image_desc" 
         />

 </LinearLayout> 

这里的问题是,虽然这显示得很好,但似乎有一些东西(寻呼机的标题栏?不确定)添加到图片上方:

很难看到,但我相信它与寻呼机碎片标题的底部直接相符,所以我似乎“继承”了一些功能?

当前基本代码

来自FragmentActivity

中的onCreate
setContentView(R.layout.activity_main);
...

mSectionsPagerAdapter = new SectionsPagerAdapter(
    getSupportFragmentManager());
mViewPager = (ViewPager) findViewById(R.id.pager);
mViewPager.setAdapter(mSectionsPagerAdapter);

SectionsPagerAdapter是一个内部类FragmentPagerAdapter,它返回一些片段,没有什么有趣的

activity_main,再次非常标准:

<android.support.v4.view.ViewPager xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/pager"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity" >

<!--
This title strip will display the currently visible page title, as well as the page
titles for adjacent pages.
-->

    <android.support.v4.view.PagerTitleStrip
        android:id="@+id/pager_title_strip"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="top"
        android:background="#555555"
        android:paddingBottom="4dp"
        android:paddingTop="4dp"
        android:textColor="#fff" />

</android.support.v4.view.ViewPager>

1 个答案:

答案 0 :(得分:1)

在我看来,使用dialogFragment似乎是一个很好的方法,它肯定是最简单的方法之一。

此外,如果合适,您可以将dialogFragment设为全屏,如下所示: 在values / styles.xml中创建自定义对话框样式

<!-- DIALOG STYLE -->
<style name="Your.Dialog" parent="android:Theme.Holo.Dialog" >
    <item name="android:windowNoTitle">true</item>
    <item name="android:windowFullscreen">true</item>
    <item name="android:windowIsFloating">false</item>
</style>

然后设置调用片段的样式,如下所示:

    myDialogFragment dialog = new myDialogFragment ();
    dialog.setStyle(DialogFragment.STYLE_NO_TITLE, R.style.Your_Dialog );
    dialog.show(getSupportFragmentManager(), "fragment_tag");