是否可以使用Java代码向Activity布局添加按钮。如果这是可能的,怎么样? 这是我当前的布局文件:
<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>
如果可能的话,我想在ScrollView内部的LinearLayout中添加Java添加按钮,但如果不可能,也可以在正常的LinearLayout中获取它。
我希望能够通过Java获取按钮的原因是我有一个包含多个对象的Array。对于每个对象,我想要一个按钮。随着时间的推移,此阵列的大小会增加。
这是我正在使用的活动文件
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 :(得分:3)
是的,可以在XML文件中为LinearLayout定义一个id。让我们说:
android:id="@+id/buttonContainer"
然后在Activity java代码中设置contentView后找到此id:
LinearLayout buttonContainer = (LinearLayout) findViewById(R.id.buttonContainer);
然后创建按钮:
Button button = new Button();
根据提供的方法自定义它。
最后将其添加到您的布局中:
buttonContainer.addView(button);
答案 1 :(得分: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);
答案 2 :(得分:1)
This link提供了有关如何使用java代码向您的Android应用添加小部件的完整教程。所以,这里是按钮事项的摘要:
1)您从setContentView(...)
方法
onCreate()
行
2)您可以像这样定义按钮:Button myButton = new Button(this);
3)您可以定义如下布局: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);