создание XML-макета из пользовательского макета. Является ли это возможным? - PullRequest
0 голосов
/ 07 февраля 2011

MainActivity.java:

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        this.setTitle(R.string.app_name);
        setContentView(new SampleView(this));
    }
}

SampleView.java:

public class SampleView extends View {

    @Override
    protected void onDraw(Canvas canvas) {
        if (certaincondition = true) {
            //add elements to canvas etc
        } else {
            //How do I do the below? The layout is defined in xml. 
            //I do not want to use Intent. Please help me

            //create a layout from resource R.layout.idAbout and transfer control.
         } 
    }
}

Ответы [ 2 ]

0 голосов
/ 07 февраля 2011

Вы можете надуть макет используя

View.inflate(getContext(), R.layout.idAbout, viewParent);

, где viewParent - это ViewParent, который будет родителем завышенного представления (и может быть null).

Но что ты пытаешься сделать? Более чем немного странно начинать новое действие или изменять иерархию представлений из onDraw(). Возможно, вы захотите опубликовать исполняемый файл на Handler, который будет делать то, что вы хотите в следующем цикле цикла событий. Чтобы начать новое действие (например, отображение & ldquo; About & rdquo; info для приложения), вам нужно взглянуть на класс Intent.

0 голосов
/ 07 февраля 2011

Использовать инфлятор:

View newRootViewElement;
LayoutInflater li = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
newRootViewElement= li.inflate(R.layout.idAbout, null);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...