Динамическое переключение между несколькими макетами в одном LinearLayout - PullRequest
0 голосов
/ 16 октября 2011

У меня есть приложение и LinearLayout в моем приложении.Когда элемент в счетчике изменяется, предполагается, что LinearLayout содержит другой макет (другой XML-файл, который также является LinearLayout).Я пытался использовать метод View.inflate, но макет не изменился с первого.Что я должен сделать, чтобы решить эту проблему?

spinner.setOnItemSelectedListener(new OnItemSelectedListener() {

        @Override
        public void onItemSelected(AdapterView<?> parentView,
                View selectedItemView, int position, long id) {
            changeForm(id);
        }

        @Override
        public void onNothingSelected(AdapterView<?> arg0) {
            ;
        }
    });

}

private void changeForm(long id) {
    LinearLayout formLayout=(LinearLayout)findViewById(R.id.type_layout);
    if(id==0){View.inflate(this, R.layout.text, formLayout);}
    else if(id==3){View.inflate(this, R.layout.phonecall, formLayout);}     
}

Ответы [ 2 ]

1 голос
/ 16 октября 2011

Вы также можете поместить все свои LinearLayouts в FrameLayout , а затем просто изменить видимость на них.

0 голосов
/ 16 октября 2011

Другой способ справиться с этим - использовать Android ViewFlipper.Это позволяет вам добавить несколько дочерних элементов под ним.И видоискатель покажет только 1 дочерний элемент за раз, используя строку типа

viewflipper.setDisplayedChild(1);

. Он также позволяет включать и выключать анимацию при переключении между представлениями.

Это учебные пособия для него

Учебник 1 , Учебник 2

...