2013-08-16 5 views
0

Я пытаюсь раздуть xml-макет в пользовательский класс View, который затем помещается в LinearLayout в реальном программном обеспечении. Через некоторое Googling мне удалось создать пользовательский класс, который раздувает макет, используя следующий класс:Как раздуть xml-макет в дочерний элемент

public class LitteringView extends RelativeLayout 
{ 

    public LitteringView(Context context) { 
     super(context); 
     // TODO Auto-generated constructor stub 
     View.inflate(context, R.layout.littering_layout, this); 

    } 


    public LitteringView(Context context, AttributeSet attrs) { 
     super(context, attrs); 
     // TODO Auto-generated constructor stub 
    } 


    @Override 
    protected void onLayout(boolean changed, int l, int t, int r, int b) { 
     // TODO Auto-generated method stub 
     for(int i = 0 ; i < getChildCount() ; i++){ 
      getChildAt(i).layout(l, t, r, b); 
     } 
    } 


    @Override 
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { 
     // TODO Auto-generated method stub 
     super.onMeasure(widthMeasureSpec, heightMeasureSpec); 
    } 





} 

Теперь это определенно раздувает, когда я добавить его в LinearLayout:

layout.addView(new LitteringView(getActivity())); 

Проблема заключается в том, что он принимает весь экран, в то время как экран должен быть разделен поровну между тремя детьми LinearLayout. Другие виды также создаются динамически. Как я могу помешать ему взять все пространство?

Я пытаюсь создать один пользовательский вид/класс и упаковать его функции внутри него, которые я тогда мог бы легко добавить к родительскому макету (в данном случае LinearLayout), желая использовать xml для определения макета View ,

ответ

1

Вам нужно использовать «вес» для просмотра. Простой пример:

Layout.LayoutParams params = new LinearLayout.LayoutParams(width, height, weight); 

Вам необходимо его оптимизировать для вашего случая. Дайте всем вашим представлениям значение веса одинаково (например: 1 для всех), и они должны поделиться просмотром.

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