2013-04-01 23 views
2

是否有可能一个按钮添加到使用Java代码的活动布局。如果这是可能的,怎么样? 这是我目前的布局文件:在Java代码中添加针对Android按钮

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@+id/ad_catalog_layout" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:background="@drawable/background" 
android:orientation="vertical" > 

<com.google.ads.AdView 
    xmlns:googleads="http://schemas.android.com/apk/lib/com.google.ads" 
    android:id="@+id/ad" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    googleads:adSize="IAB_BANNER" 
    googleads:adUnitId="a14d7f7d2180609" /> 

<TextView 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:text="@string/menu_mods" 
    android:textColor="#FFFFFF" 
    android:textSize="25sp" /> 

<ScrollView 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_margin="2dp" > 

    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:orientation="vertical" > 

     <Button 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:onClick="enterPeacefulPack" 
      android:text="@string/peacefulpack" 
      android:paddingBottom="20dp" 
      android:paddingLeft="20dp" 
      android:paddingRight="20dp" 
      android:paddingTop="20dp" 
      android:textColor="#FFFFFF" 
      android:textSize="25sp" /> 
    </LinearLayout> 
</ScrollView> 

如果有可能,我想有一个是滚动型的内部的LinearLayout里面添加Java的按钮,但如果这是不可能的,也将可以将其置于正常的LinearLayout中。

我希望能够通过Java获得按钮的原因是我有一个包含多个对象的数组。对于每个对象,我想要一个按钮。随着时间的推移,这个数组的大小会增加

这是活动的文件我用

package com.wuppy.minecraftmods.mods; 

import android.annotation.SuppressLint; 
import android.app.ActionBar.LayoutParams; 
import android.app.Activity; 
import android.content.Intent; 
import android.os.Build; 
import android.os.Bundle; 
import android.support.v4.app.NavUtils; 
import android.view.MenuItem; 
import android.view.View; 
import android.widget.Button; 

import com.google.ads.AdRequest; 
import com.google.ads.AdView; 
import com.wuppy.minecraftmods.R; 

public class Mods extends Activity 
{ 
@SuppressLint("NewApi") 
@Override 
protected void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_mods); 

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) 
    { 
     getActionBar().setDisplayHomeAsUpEnabled(true); 
    } 

    AdView adView = (AdView) this.findViewById(R.id.ad); 
    adView.loadAd(new AdRequest()); 
} 

@Override 
public boolean onOptionsItemSelected(MenuItem item) 
{ 
    switch (item.getItemId()) 
    { 
    case android.R.id.home: 
     NavUtils.navigateUpFromSameTask(this); 
     return true; 
    } 
    return super.onOptionsItemSelected(item); 
} 

public void enterPeacefulPack(View view) 
{ 
    Intent intent = new Intent(this, ModPeacefulpack.class); 
    startActivity(intent); 
} 
} 

所以我想通过Java来添加按钮,因为我没有真正做到这一点的XML可以。这是可能的,如果是这样的话?

+0

请参阅此网址。 http://stackoverflow.com/questions/4907609/add-button-to-a-layout-programmatically – jigspatel

+1

这是完全有可能的,并且在这个主题上有很多帖子在互联网上。你为什么不使用Google? – Egor

回答

2

是的,有可能,在您的XML文件中为您的LinearLayout定义一个id。让说:

android:id="@+id/buttonContainer" 

然后在活动的Java代码中找到这个ID设置内容查看后:

LinearLayout buttonContainer = (LinearLayout) findViewById(R.id.buttonContainer); 

然后创建您的按钮:

Button button = new Button(); 

定制它,只要你喜欢,给提供的方法。

最后将它添加到您的布局:

buttonContainer.addView(button); 
+0

无论我做什么,'按钮按钮=新的按钮();'没有输入上下文不起作用。它适用于从java.awt中导入widget而不是android.widget。但除非我使用'(this)'作为上下文,否则新的Button()在java中不起作用。你能解释为什么你只显示按钮(); ?谢谢。 – dbconfession

+0

@dbconfession这是一个错误,Android视图需要一个上下文。 – Lesleh

1

添加适当的导入到你的活动:

import android.widget.Button; 

然后创建onCreate方法中的一个新的按钮对象:

Button myButton = new Button(this); 
myButton.setText("Press Me"); 

最后添加按钮的布局:

LinearLayout layout = (LinearLayout) findViewById(R.id.layout1); 
layout.addView(myButton); 
1

This link给出了关于如何使用Java代码将小部件添加到Android应用程序的完整教程。所以,这里是为您的按钮事情摘要:Button myButton = new Button(this);

3)你定义诸如布局:

1)你从onCreate()方法

2)你这样定义你的按钮删除setContentView(...)线这样的:RelativeLayout myLayout = new RelativeLayout(this);

4)您添加按钮的布局是这样的:myLayout.addView(myButton);

5)您可以设置这样的布局:setContentView(myLayout);

要将按钮添加到已通过.xml文件中定义的布局,这是你的情况,你写了下面的代码,而不是上述五个步骤:

LinearLayout layout = (LinearLayout) findViewById(R.id.myLayout); 
Button button = new Button(this); 
layout.addView(button);