Краткое и сладкое резюме:
При изменении класса с View
-произведенного на ViewGroup
-произведенного параметры высоты и / или ширины, переданные в onSizeChanged
, не соответствуют для моего класса при использовании внутри LinearLayout. Нужно ли предоставлять какую-либо дополнительную информацию при использовании ViewGroup в качестве суперкласса для достижения стабильных результатов?
Длинная версия:
Я создал собственный визуальный элемент управления, производный от View, который я использую как пользовательскую кнопку. Я наследую от View, а затем добавляю его в мои макеты следующим образом:
объявление класса:
public class GameButton extends View {
XML:
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="0dip"
android:orientation="horizontal"
android:layout_weight="1">
<com.myname.myapp.controls.GameButton
android:id="@+id/button1"
android:layout_width="0dip"
android:layout_height="fill_parent"
android:layout_weight="1" />
Я хочу немного поработать с элементом управления, поэтому я изменил его, чтобы он наследовал от ViewGroup или любого подкласса ViewGroup (например, в настоящее время пытаюсь сделать его RelativeLayout, например). Как только я это сделаю, он исчезнет.
Я добавил запись в журнал, чтобы увидеть значения, передаваемые в onSizeChanged, и я получаю 0 высоту, передаваемую в onSizeChanged для каждого экземпляра моего элемента управления без изменений в компоновке xml (см. Выше), которая работает иначе, когда я получаю непосредственно из вид.
Нужно ли добавлять какие-либо дополнительные подсказки, параметры или параметры макета либо в XML, либо в код при переключении из View в ViewGroup?