2015-07-15 2 views
1

Я пытаюсь создать макет программно, где есть один ImageView с двумя кнопками. Теперь ImageView будет в центре, а кнопки будут у основания макета. Но я не в состоянии это сделать. Вот мой кодДинамически и программно создать макет

public class StackView extends RelativeLayout { 

    .................... 

    RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT); 
    params.addRule(RelativeLayout.CENTER_IN_PARENT); 
    RelativeLayout.LayoutParams params1 = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); 
    params1.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM|Gravity.LEFT); 
    RelativeLayout.LayoutParams params2 = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); 
    params2.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM|Gravity.RIGHT); 


    addView(imageview, 0, params); 
    Button button=new Button(context); 
    button.setText("left"); 
    button.setGravity(Gravity.START); 
    addView(button, 1, params1); 
    Button button1=new Button(context); 
    button1.setText("right"); 
    button.setGravity(Gravity.END); 
    addView(button1, 2,params2); 
} 
+3

и почему это не вы хотите, чтобы раздуть его из XML? – pskink

+0

Это просто базовое исследование для меня, никаких других проблем. @ Pskink – Soham

+0

Вы пробовали менять LayoutParams? – gRaWEty

ответ

1

У меня есть ответ. Вот как я это делаю.

  Button button=new Button(context); 
      RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT); 
      params.addRule(RelativeLayout.CENTER_IN_PARENT); 
      RelativeLayout.LayoutParams params1 = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); 
      params1.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM); 
      params1.addRule(BELOW,card.getId()); 
      RelativeLayout.LayoutParams params2 = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); 
      params2.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM); 
      // params2.addRule(BELOW,card.getId()); 
      params2.addRule(ALIGN_PARENT_RIGHT,button.getId()); 

      addView(imageview, 0, params); 

      button.setText("left"); 
      button.setGravity(Gravity.START); 
      addView(button, 1, params1); 
      Button button1=new Button(context); 
      button1.setText("right"); 
      //button.setGravity(Gravity.END); 
      addView(button1, 2,params2); 
0

Попробуйте

activity_main.xml

<RelativeLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    tools:context="com.example.demo.MainActivity" 
    android:id="@+id/layout" > 

</RelativeLayout> 
public class MainActivity extends Activity { 

    private RelativeLayout layout; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     layout = (RelativeLayout) findViewById(R.id.layout); 

     //for imageview 
     RelativeLayout.LayoutParams paramBtn = new 
     RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, 
     RelativeLayout.LayoutParams.WRAP_CONTENT);   
     paramBtn.addRule(RelativeLayout.CENTER_IN_PARENT); 

     ImageView imgView = new ImageView(getApplicationContext()); 
     imgView.setId(1); 
     imgView.setBackgroundResource(R.drawable.ic_launcher); 
     imgView.setLayoutParams(paramBtn); 
     layout.addView(imgView); 

     RelativeLayout.LayoutParams param1 = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT); 
     param1.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM); 

     Button btn1 = new Button(getApplicationContext()); 
     btn1.setId(2); 
     btn1.setText("Submit"); 
     btn1.setLayoutParams(param1); 
     layout.addView(btn1); 


     RelativeLayout.LayoutParams param2 = new  
     RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, 
     RelativeLayout.LayoutParams.WRAP_CONTENT); 
     param2.addRule(RelativeLayout.RIGHT_OF,btn1.getId()); 
     param2.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM); 
     Button btn2 = new Button(getApplicationContext()); 
     btn2.setId(3); 
     btn2.setText("Submit-2"); 
     btn2.setLayoutParams(param2); 
     layout.addView(btn2); 

     } 
    } 
+0

Спасибо за ваш ответ, но, согласно моим исследованиям, я не хочу использовать какой-либо xml-файл. В любом случае у меня есть мое решение. – Soham

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