2015-08-03 4 views
1

Привет У меня есть SurfaceView в моей app.All мои игры построены так:Фрагмент поверх SurfaceView

Instanciating подкласс SurfaceView, который реализует интерфейс SurfaceHolder.Callback.

Теперь я хочу открыть меню, когда я нажимаю кнопку (пользовательский объект) Это должно вывести фрагмент с прокручиваемым текстом (я думал только о listview с одним элементом textview внутри него, потому что я подумайте, что только текст не прокручивается, если текст очень длинный .. любые противоположные аргументы приветствуются)

но как это сделать?

У меня есть Allready класс Fragment и макет фрагмента

Edit 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> 

ответ

0

В макете, оберните 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> 
+0

см myeditr в вопросе –

+0

Pleasr просто изменить свой вопрос, вместо того, чтобы заставить меня prettyprint код – d0nut

+0

нормально сделать это проверить его –

Смежные вопросы