2013-04-04 5 views
0

Я динамически создаю горизонтальный LinearLayout с 5 видами, добавленными к каждому из них. Затем он добавляется к вертикальному LinearLayout, который находится внутри прокрутки.Пытается центрировать горизонтальный макет LinearLayout

Я установил гравитацию с помощью layout.setGravity (Gravity.CENTER) ;, но он не центрирован, а оставлен в сборе.

код, который создает горизонтальной LinearLayouts

for(int i=0; i<cGlobals.mNames.length; i+=2) 
{ 
    LinearLayout layout = new LinearLayout(this); 
    layout.setOrientation(LinearLayout.HORIZONTAL); 
    layout.setGravity(Gravity.CENTER); 
    LinearLayout.LayoutParams llp = new LinearLayout.LayoutParams(
        LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); 
    layout.setLayoutParams(llp); 
    AddButton(layout, cGlobals.mNames[i], i); 

    TextView t=new TextView(this); 
    t.setText(" "); 
    layout.addView(t); 

    if (i+1<cGlobals.mNames.length) 
     AddButton(layout, cGlobals.mNames[i+1], i+1); 

    Container.addView(layout); 
} 

код, который Creats кнопки добавлены в макете Линар

void AddButton(LinearLayout layout, String name, int i) 
{  

    favBut[i]=new ImageView(this); 
    if (cGlobals.conFav.contains(name) ) 
     favBut[i].setImageResource(R.drawable.heartselected2); 
    else 
     favBut[i].setImageResource(R.drawable.heartunselected2); 

    favBut[i].setId(defStartFavId+i); 
    favBut[i].setOnClickListener(this); 

    layout.addView(favBut[i]); 

    int w=getWindowManager().getDefaultDisplay().getWidth(); 
    w-=200; // hearts 
    w=w/2; 


    Button but1=new Button(this); 
    but1.setText(name); 
    but1.setWidth(w); 
    layout.addView(but1); 

    but1.setOnClickListener(this); 
    but1.setId(defStartButId+i);  

} 

XML файл для разметки

<LinearLayout 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:layout_gravity="center" 
android:orientation="horizontal" > 

     <Button 
     android:id="@+id/butVol" 
     android:layout_width="140dp" 
     android:layout_height="wrap_content" 
     android:textSize="24px" 
     android:text="Volume" 
     android:textColor="#ff0000ff" 
     android:layout_gravity="center" 
    /> 

    <Button 
     android:id="@+id/butRington" 
     android:layout_width="140dp" 
     android:layout_height="wrap_content" 
     android:textSize="24px" 
     android:text="Rington" 
     android:textColor="#ff0000ff" 
     android:layout_gravity="center" 
    /> 

ответ

2

Можно попытаться определить параметры макета, как это ...

LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT); 
layoutParams.gravity = Gravity.CENTER; 
layout.addView(favBut[i], layoutParams); 

и/или

Container.addView(layout, layoutParams); 

и, возможно, изменить MATCH_PARENT к WRAP_CONTENT depdning по результатам вы после этого.

http://developer.android.com/reference/android/widget/LinearLayout.LayoutParams.html

+0

Привет, я путаю, горизонтальная раскладка устанавливается в WRAP_CONTENT прямо сейчас –

+0

@Tedpottel просто попробуйте выше первой, не говоря мой комментарий о wrap_content. Если он не работает, измените верхнюю строку, определяющую макеты макета, на wrap_content, wrap_content. – logray

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