2014-09-10 4 views
0

Я пытаюсь добавить эту кнопкупрограммно добавлена ​​кнопка Android имеет матч родительской ширину и высоту

 Button dalsi_akce = new Button(this); 
     dalsi_akce.setGravity(Gravity.CENTER); 
     RelativeLayout.LayoutParams p = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, 
     RelativeLayout.LayoutParams.WRAP_CONTENT); 
     dalsi_akce.setLayoutParams(p); 
     setContentView(dalsi_akce); 
     dalsi_akce.setText("test"); 

появляется кнопка, но полный родительский матч. У меня есть эта кнопка на весь экран. Как установить ширину и высоту кнопки?

+0

setContentView (dalsi_akce); Что вы пытаетесь сделать с этим? –

ответ

2

Вы устанавливаете содержимое активности как кнопку. Вот почему он охватывает всю деятельность и просто ошибается.

Вместо этого создайте макет своей деятельности (файл xml) и установите его с помощью setContentView. Затем вы можете программно добавить кнопку в контент.

Пример:

ваша активность:

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    ViewGroup viewGroup = (ViewGroup) findViewById(R.id.myLayout); 
    Button dalsi_akce = new Button(this); 
    dalsi_akce.setGravity(Gravity.CENTER); 
    RelativeLayout.LayoutParams p = new RelativeLayout.LayoutParams(
      RelativeLayout.LayoutParams.WRAP_CONTENT, 
      RelativeLayout.LayoutParams.WRAP_CONTENT); 
    dalsi_akce.setLayoutParams(p); 
    dalsi_akce.setText("test"); 


    viewGroup.addView(dalsi_akce); 
} 

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" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    android:paddingBottom="@dimen/activity_vertical_margin" 
    android:id="@+id/myLayout" 
    tools:context=".MyActivity"> 


</RelativeLayout> 
+0

Спасибо. Вы поможете мне понять, как работают setContentView и addView. Вы решили мою проблему и научили меня новым вещам. – user3690515

+0

хорошее описание, очень помогите! –

0

Прежде всего, вы должны определить свой вид контента как RelativeLayout или LinearLayout, затем добавьте свою кнопку в этот макет. Также Вы можете еще один конструктор RelativeLayout.LayoutParams класса:

RelativeLayout.LayoutParams p = new RelativeLayout.LayoutParams(200, 70); 

на самом деле использовать этот конструктор:

public LayoutParams(int w, int h) { 
    super(w, h); 
} 
0

Было бы проще, если бы вы только что создали макет в layout.xml, а затем настроить ваш кнопок по вашему желанию. Например, вы можете сделать следующее:

<RelativeLayout 
xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="match_parent"> 

    <Button 
    android:id"@+id/left_button" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentTop="true" 
    android:layout_alignParentRight="true" 
    android:text="Left"/> 

</RelativeLayout> 

Это даст вам одну кнопку, которая только как большой, как его содержание в правом верхнем углу.

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