2012-06-08 2 views
0

Я недавно закодировал свою кнопку, чтобы выровнять ее справа от экрана, и, похоже, она не хочет работать. Я также проверил, установлен ли мой родительский макет, чтобы покрыть всю ширину экрана, и это так.Расположение кнопок Android

public void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 

    //Vertical Layout - For the layout of the newSheetLayout. 
    newSheetLayoutV = new LinearLayout(this); 
    newSheetLayoutV.setOrientation(LinearLayout.VERTICAL); 

    //Horizontal layout - nested in Vertical layout. Used for the next, back and save buttons. 
    newSheetButtonLayoutH = new LinearLayout(this); 
    newSheetButtonLayoutH.setOrientation(LinearLayout.HORIZONTAL); 

    //Vertical Layout - For the layout of the newSheetLayout. 
    dataShowV = new LinearLayout(this); 
    dataShowV.setOrientation(LinearLayout.VERTICAL); 

    //Horizontal layout - nested in the dataShow V. Used for the data entry objects. 
    dataShowH = new LinearLayout(this); 
    dataShowH.setOrientation(LinearLayout.HORIZONTAL); 

    //Next button. 
    nextButton = new Button(this); 
    nextButton.setText("NEXT >"); 
    nextButton.setOnClickListener(nextListener); 

    //Back button. 
    backButton = new Button(this); 
    backButton.setText("< BACK"); 
    backButton.setOnClickListener(backListener); 
    backButton.setEnabled(false); 

    //Save button. 
    saveButton = new Button(this); 
    saveButton.setText("Save"); 
    saveButton.setOnClickListener(saveListener); 
    saveButton.setEnabled(false); 

    //Addition of the buttons to the button view in order that needs to be seen. 
    newSheetButtonLayoutH.addView(backButton); 
    newSheetButtonLayoutH.addView(nextButton); 
    newSheetButtonLayoutH.addView(saveButton); 

    //Layout Param's for the buttons. 
    LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT); 
    newSheetButtonLayoutH.setLayoutParams(params); 

    //Set save to anchor right. 
    LinearLayout.LayoutParams saveButtonParam = new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); 
    saveButtonParam.gravity = Gravity.RIGHT; 
    saveButton.setLayoutParams(saveButtonParam); 

    //Add all the layout Views to the main layout view. 
    newSheetLayoutV.addView(dataShowV); 
    newSheetLayoutV.addView(newSheetButtonLayoutH); 
    newSheetLayoutV.setGravity(Gravity.BOTTOM); 

    setContentView(newSheetLayoutV); 
} 

Если это что-то простое, и я очень слеп к решению, я накажу себя соответствующим образом.

Благодарим за помощь.

+0

вы его получили? проверьте отредактированный ответ. – Siddhesh

+0

Установить setLayoutGravity вправо. – AndroGeek

ответ

0

попробовать

saveButton.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT,Gravity.RIGHT); 

, если вы используете XML и ваша потребность не сделать это динамично затем сделать

android:layout_gravity="right" 

Edit: я думаю, что это то, что вы хотите

enter image description here

LinearLayout newSheetLayoutV,dataShowV,dataShowH,newSheetButtonLayoutH,newlayout; 
    Button nextButton,backButton,saveButton; 
    //RelativeLayout ; 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     newSheetLayoutV = new LinearLayout(this); 
     newSheetLayoutV.setOrientation(LinearLayout.VERTICAL); 

     //Horizontal layout - nested in Vertical layout. Used for the next, back and save buttons. 
     newSheetButtonLayoutH = new LinearLayout(this); 
     newSheetButtonLayoutH.setOrientation(LinearLayout.HORIZONTAL); 
     newlayout = new LinearLayout(this); 
     newlayout.setOrientation(LinearLayout.VERTICAL); 
     newlayout.setGravity(Gravity.RIGHT); 
     newlayout.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT)); 
     //newSheetButtonLayoutH = new RelativeLayout(this); 


     //Vertical Layout - For the layout of the newSheetLayout. 
     dataShowV = new LinearLayout(this); 
     dataShowV.setOrientation(LinearLayout.VERTICAL); 

     //Horizontal layout - nested in the dataShow V. Used for the data entry objects. 
     dataShowH = new LinearLayout(this); 
     dataShowH.setOrientation(LinearLayout.HORIZONTAL); 

     //Next button. 
     nextButton = new Button(this); 
     nextButton.setText("NEXT >"); 
     //nextButton.setOnClickListener(nextListener); 

     //Back button. 
     backButton = new Button(this); 
     backButton.setText("< BACK"); 
     //backButton.setOnClickListener(backListener); 
     backButton.setEnabled(false); 

     //Save button. 
     saveButton = new Button(this); 
     saveButton.setText("Save"); 
     //saveButton.setOnClickListener(saveListener); 
     saveButton.setEnabled(false); 
     LinearLayout.LayoutParams saveButtonParam = new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); 
     //saveButtonParam.gravity = Gravity.RIGHT; 
     saveButton.setLayoutParams(saveButtonParam); 
     //Addition of the buttons to the button view in order that needs to be seen. 

     newSheetButtonLayoutH.addView(backButton); 

     newSheetButtonLayoutH.addView(nextButton); 
     newlayout.addView(saveButton); 
     newSheetButtonLayoutH.addView(newlayout); 

     //Layout Param's for the buttons. 
     LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT); 
     newSheetButtonLayoutH.setLayoutParams(params); 

     //Set save to anchor right. 


     //Add all the layout Views to the main layout view. 
     newSheetLayoutV.addView(dataShowV); 
     newSheetLayoutV.addView(newSheetButtonLayoutH); 
     newSheetLayoutV.setGravity(Gravity.BOTTOM); 

     setContentView(newSheetLayoutV); 

    } 
+0

Это сработало, но оно только протянуло кнопку справа. Он также установлен в wrap_content, чтобы он работал. Я немного потрудился с этим после того, как проверил другие ответы. –

+0

Я думаю, вам следует шаг за шагом по кодированию сначала установить 'LayoutParams' в ваш' Layout', а затем установить 'Layout' на вашу' Button', а затем добавить 'Button' в' Layout'. – Siddhesh

+0

OK Я отдам его. Наверное, это не помешает попробовать. –

0

Попробуйте установить layout_gravityLinearLayout вместо Button.

+0

Это не сработает, так как гравитация макета была настроена на заполнение родительского поля. Кроме того, в макете есть еще две кнопки. –

0

Постарайся давая RelativeLayout PARAMS

RelativeLayout.LayoutParams rel_lp = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); 
    rel_lp.addRule(RelativeLayout.ALIGN_RIGHT); 
    rel_lp.addRule(RelativeLayout.ALIGN_PARENT_RIGHT);  
    btn.setLayoutParams(rel_lp);  
+0

Это не работает как его linearLayout, и два макета несовместимы. Результатом будет исключение из-за того, что родительский макет является linearLayout. –

+0

вы пробовали эту штуку? – Nirali

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