2014-09-10 33 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);你想用這個做什麼? – 2014-09-10 19:51:04

回答

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 2014-09-10 20:07:44

+0

很好的解釋,非常有幫助! – 2014-11-27 06:53:02

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> 

這會給你一個按鈕,這只是一樣大,它在右上角的內容。

相關問題