表面视图顶部的片段
Fragment on top of surfaceview
你好,我的 app.All 中有一个表面视图,我的游戏是这样构建的:
实例化实现 SurfaceHolder.Callback 接口的 Surfaceview 的子class。
现在我想在单击按钮(自定义对象)时打开菜单
这应该会显示一个带有可滚动文本视图的片段(我想到的只是一个带有一个文本视图元素的列表视图,因为我认为如果文本很长,单独的文本视图是不可滚动的。欢迎任何相反的论点)
但是我该怎么做呢?
我已经准备好片段 class 和片段的布局
编辑 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>
所以现在我只需要在单击按钮时显示一个片段
这里是目前的片段 Class:
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>
在您的布局中,将 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>
你好,我的 app.All 中有一个表面视图,我的游戏是这样构建的:
实例化实现 SurfaceHolder.Callback 接口的 Surfaceview 的子class。
现在我想在单击按钮(自定义对象)时打开菜单 这应该会显示一个带有可滚动文本视图的片段(我想到的只是一个带有一个文本视图元素的列表视图,因为我认为如果文本很长,单独的文本视图是不可滚动的。欢迎任何相反的论点)
但是我该怎么做呢?
我已经准备好片段 class 和片段的布局
编辑 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>
所以现在我只需要在单击按钮时显示一个片段
这里是目前的片段 Class:
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>
在您的布局中,将 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>