Нарисуйте LinearLayout на SurfaceView - PullRequest
1 голос
/ 27 декабря 2011

У меня есть класс с именем Panel, подобный этому:

public class Test extends Activity{

public void onCreate(Bundle savedInstanceState) {

  super.onCreate(savedInstanceState);
     setContentView(new Panel(this)); 
     ...
}
class Panel extends SurfaceView implements SurfaceHolder.Callback {

     private LinearLayout layout;
     public Panel(Context context) {
            super(context);
            layout = //get layout resource in layouts folder
    }

    public void onDraw(Canvas canvas) {
        //I want to draw my xml layout
        layout.draw(canvas);

    }
}

Я пытался использовать LayoutInflater для получения моего макета:

LayoutInflater inflater = LayoutInflater.from(context);
layout = new LinearLayout(getApplicationContext());
inflater.inflate(R.layout.mylayout, layout);

... но я не вижучто-нибудь на экране, только черный фон: S

1 Ответ

0 голосов
/ 27 декабря 2011

насколько я знаю, вы не можете нарисовать линейный макет внутри SurfaceView вы можете нарисовать все, что вы хотите в вашем SurfaceView, если вы хотите добавить элементы к вашему виду, например кнопки иличто-то подобное я рекомендую использовать XML и поместить все свои элементы там.Примерно так:

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <SurfaceView android:id="@+id/mySurfaceView"
        android:layout_width="match_parent" 
        android:layout_height="match_parent"
        android:layout_weight="1">      
    </SurfaceView>
    <Button android:id="@+id/button" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:layout_alignParentRight="true" 
        android:layout_centerVertical="true" 
        android:text="myButton"/>
</LinearLayout>

и тогда вы можете установить свой контент для просмотра с помощью setContentView(R.layout.my_xml);

...