2

В настоящее время у меня очень сложная задача. Вот что:Пользовательские атрибуты - изменение ориентации

Я создал пользовательский вид, где я хочу установить определенный атрибут из макета xml. Я получаю свои пользовательские атрибуты в конструкторе для представления. Теперь после изменения ориентации этот конструктор не вызван снова, но я установил разные значения для моих пользовательских атрибутов. есть ли какой-либо способ автоматически получить эти новые значения, или мне нужно установить их вручную при изменении ориентации (или раздуться снова)?

на заказ Вид:

public MyCustomView(Context context, AttributeSet attrs) { 
    super(context, attrs); 
    TypedArray a = context.getTheme().obtainStyledAttributes(
     attrs, 
     R.styleable.MyCustomView, 
     0, 0); 

    try { 
     mAttr = a.getBoolean(R.styleable.MyCustomView_customAttr, false); 
    } finally { 
     a.recycle(); 
    } 
} 

макета пейзаж

<com.me.MyCustomView 
    custom:customAttr="false" /> 

макета портрет

<com.me.MyCustomView 
    custom:customAttr="true" /> 

спасибо за любые советы!

ответ

1

Вы используете android:configChanges="orientation" на своем Активность в манифесту?

так:

<activity android:name=".MyActivity" 
      android:configChanges="orientation|keyboardHidden" 
      android:label="@string/app_name"> 

Если вы делаете, вы запрашиваете для управления изменением ориентации на себя, так что вы ответственны за воссоздавать вид по мере необходимости (повторно раздуть его, да). Вы можете сделать это в сообщении в своем Мероприятие.

Но если вы удалите этот параметр, то активность должна быть воссоздана по умолчанию так, ваш макет будет строить заново с новыми атрибутами ...

Как объясняют в этой теме: oncreate called on every re-orientation

больше информации около Handling Runtime changes here.

+0

спасибо большое! это сработало! я думал, что может быть способ воссоздать представление или вручную установить атрибуты ... но кажется, что нет. – saberrider

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