【问题标题】:Fragment on top of surfaceviewSurfaceview顶部的片段
【发布时间】:2015-08-03 18:57:36
【问题描述】:

您好,我的应用中有一个surfaceview。我所有的游戏都是这样构建的:

实例化实现 SurfaceHolder.Callback 接口的 Surfaceview 的子类。

现在我想在单击按钮时打开一个菜单(自定义对象) 这应该会显示一个带有可滚动文本视图的片段(我认为只是一个带有一个文本视图元素的列表视图,因为我认为如果文本很长,单独的文本视图是不可滚动的。欢迎任何相反的论点)

但是我该怎么做呢?

我已经有了一个 Fragment 类和一个片段布局

编辑 3:

好的,我已经设法像这样以编程方式设置 SurfaceView:

   protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    if(savedInstanceState==null)
    {
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
                             WindowManager.LayoutParams.FLAG_FULLSCREEN);
        setContentView(R.layout.main);
        prefs=getSharedPreferences("myPrefs",0);
        mView=new MainView(this);
        loadSharedPrefs();

        LinearLayout myLayout = (LinearLayout)findViewById(R.id.main);

        mView.setLayoutParams(new LinearLayout.LayoutParams(
                                             LinearLayout.LayoutParams.MATCH_PARENT,
                                             LinearLayout.LayoutParams.MATCH_PARENT));
        myLayout.addView(mView);
    }
}

布局只是一个空白的线性布局:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal" 
android:id="@+id/main">
</LinearLayout>

所以现在我只需要在单击按钮时显示一个片段

到目前为止的片段类:

public class HintListFragment extends Fragment
{


 @Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
    Bundle savedInstanceState) {
    // Inflate the layout for this fragment
    return inflater.inflate(R.layout.hintlist, container, false);
    }
}

以及该片段的布局:

<?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:orientation="vertical" >

<TextView 
    android:id="@+id/hintList"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:text="sagdjsahgdhascxasbcxahsgdhsagdhasgdashgdsajsgdh"

    />


</LinearLayout>

【问题讨论】:

    标签: android android-layout android-fragments surfaceview


    【解决方案1】:

    在您的布局中,将surfaceview 和片段包装在FrameLayout 中。确保片段位于表面视图的顶部,然后将片段的可见性设置为GONE。当你想显示片段时,只需将可见性设置为VISIBLE

    <FrameLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent">
        <SurfaceView
            android:layout_width="match_parent"
            android:layout_height="match_parent"/>
        <com.example.MyFragment
            android:visibility="gone"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" 
            android:layout_gravity="center"
            android:id="@+id/myfragment"/>
    </FrameLayout>
    

    【讨论】:

    • @IljaKO 对不起,但我真的不知道你在问什么。我刚刚告诉你如何调整布局以允许片段出现在表面视图的顶部。您在理解方面需要什么帮助?
    • R.layout.main 是你的布局文件。在那里进行更改。此外,我会阅读如何在 android 中进行布局工作,因为它是构建应用程序的一个非常重要的部分。它使对布局进行大量更改变得非常容易
    • 你应该使用布局。它会在你的surfaceview中调用空的构造函数。
    • @IljaKO 稍后我终于回家时,我会尝试更深入地回答您的问题,但目前我很忙。只需知道布局将在表面视图中使用您的空构造函数(因此您需要更改其工作方式),但布局文件可能是最简单的方法。此外,您还可以使用片段管理器以编程方式将视图加载到您的布局和片段中。
    • @IljaKO 你确实有一个空白的构造函数。它在超类中隐式定义
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-10-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-24
    • 1970-01-01
    相关资源
    最近更新 更多