2011-11-10 58 views
0

我只是想動態地將按鈕添加到我的佈局,當我想。 的按鈕應該是這樣的XML按鈕:如何以編程方式創建按鈕?

<Button android:text="Text" 
android:gravity="bottom" 
android:textSize="10dp" 
android:textColor="#FFFFFF" 
android:layout_width="wrap_content" 
android:background="@drawable/attack1" 
android:layout_height="wrap_content" 
android:id="@+id/workingButton"> 
</Button> 

public class GravityIssueActivity extends Activity 
{ 
    LinearLayout layout; 
    Button newButton; 
    Button buttonByXml; 
    @Override 
    public void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     //the button in the xml file 
     buttonByXml = (Button)findViewById(R.id.workingButton); 
     layout = (LinearLayout)findViewById(R.id.layoutToInsert); 
     //my new programatically "born" button 
     newButton = new Button(this); 
     //Setting the properties as i want 
     newButton.setText("Text"); 
     newButton.setTextSize(10); 
     newButton.setTextColor(Color.WHITE); 
     newButton.setBackgroundResource(R.drawable.attack1); 
     // Gravity = Bottom !!!!!!!!!! 
     newButton.setGravity(Gravity.BOTTOM); 
     // getting the XML buttons params just for case... 
     newButton.setLayoutParams(new LayoutParams(buttonByXml.getLayoutParams())); 
     //Adding my new Button to the layout 
     layout.addView(newButton); 
    } 
} 

這裏是結果的圖像:

enter image description here

這怎麼可能成爲不同的結果,當我複製所有的屬性?

+0

說實話,我只得到了重力問題。我無法讓文字處於最底層。 LinearLayout.LayoutParams params = new LinearLayout.LayoutParams \t(LayoutParams.WRAP_CONTENT,LayoutParams.FILL_PARENT); params.gravity = 80只是不工作, –

+0

你需要重力來對齊按鈕內的文本或對齊它的父母內的按鈕? – Vladimir

+1

我只是想按鈕的文本對齊按鈕的底部:) –

回答

0

如果需要對齊文本到按鈕的底部,你需要的是:如果你想創建

Button button = ... 
//apply required paramteres 
button.setGravity(Gravity.BOTTOM); 
+0

我的代碼有些問題,因爲這個snipet在按鈕的底部和文本之間留下了空的空間。這就是爲什麼我發佈這個問題...我只是沒有明白。 –

+0

你能提供你得到的結果嗎?如果沒有看到它,我只能假定你設置了'setLineSpacing()',其值大於所需的值,或者你在用來設置按鈕文本的字符串末尾有'\ n'。 – Vladimir

+0

我不使用setLineSpacing(), 如果我使用上面的XML代碼,我有一個很好的圖像按鈕,其底部有文本。如果我嘗試用代碼創建一個類似.setGravity(Gravity.BOTTOM)的代碼,那麼在文本和Button的底部之間會有一個空白空間。 –

0

使用下面code.you還添加其他參數

Button submit=new Button(this); 
    LinearLayout.LayoutParams params= new LinearLayout.LayoutParams(LinearLayout.LayoutParams.FILL_PARENT,LinearLayout.LayoutParams.WRAP_CONTENT); 
    params.setMargins(25, 0, 25, 0); 
    submit.setLayoutParams(params); 
    submit.setText("Attack"); 
    submit.setTextSize(10); 
    submit.setTextColor(getResources().getColor(R.color.white)); 
    submit.setBackgroundResource(R.drawable.attack); 
+0

設置的頁邊距在不同的分辨率設備中是否會產生相同的結果? –

1

動態視圖(如按鈕,文本視圖等),然後使用此代碼並在您的應用程序中運行它。

MyActivity.java://your的java文件

LinearLayout ll = (LinearLayout)findViewById(R.id.linearLayout1); 
Button btn = new Button(this) 
btn.setText("My Dynamic Button); 
btn.setMinLines(1); 
btn.setMaxLines(3); 
ll.addView(et); 

在XML文件:

<LinearLayout 
android:id="@+id/linearLayout1" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:layout_alignBottom="@+id/TextView01" 
android:layout_below="@+id/relativeLayout1" 
android:orientation="vertical" >