java - 通过单击按钮创建 Imagebutton 的新实例

标签 java android mobile dynamic imagebutton

我正在编程的应用程序有一个菜单,用户可以在其中选择要 build 的新建筑。用户将按“购买”,我希望创建与该特定建筑物相对应的图像按钮的新实例。我当前的问题是,我只知道如何通过在 xml 文件中设置这些内容并将它们设置为不可见,直到他们购买为止来做到这一点。我想在购买这些建筑物时动态创建它们。有没有办法以这种方式动态创建图像按钮的实例?我真的不认为在这里包含我的源代码是必要的,因为我只需要一个有效的示例(我见过的大多数示例都行不通)。但如果您想查看一些源代码,请告诉我。

感谢任何帮助。谢谢。

购买建筑按钮内的代码:

newColonyHut = new ImageButton(runGraphics.this);
newColonyHut.setImageResource(R.drawable.mainhut);
newColonyHut.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT));
layout.addView(newColonyHut);

这是 xml:

    <LinearLayout
        android:layout_width="fill_parent" 
        android:layout_height="fill_parent"
        android:orientation="horizontal" >

        <RelativeLayout
            android:id="@+id/layout"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:orientation="horizontal" 
            android:layout_marginLeft="0dp"
            android:layout_marginRight="20dp" >

            <Button
                android:id="@+id/buyColonyHut"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:orientation="horizontal"
                android:layout_centerHorizontal="true"
                android:layout_marginBottom="5dp"
                android:layout_below="@+id/colonyHutPrice" />
    </LinearLayout>

最佳答案

您可以创建ImageView并动态添加到您指定的布局。

示例:

oncreate()

    @Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_main);

    Button b = (Button) findViewById(R.id.button1);
    final LinearLayout test = (LinearLayout)findViewById(R.id.test);

    b.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            ImageView image = new ImageView(MainActivity.this);
            image.setImageResource(your_image_here);
            image.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT,LinearLayout.LayoutParams.WRAP_CONTENT));
            test.addView(image);
        }
    });

activity_main

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/home_page"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:clickable="true" >

<LinearLayout
    android:id="@+id/test"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:clickable="true"
    android:orientation="horizontal">

    <Button
        android:id="@+id/button1"
        style="?android:attr/buttonStyleSmall"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@drawable/layer"
        android:text="Button" />
</LinearLayout>

如您所见,当在布局中单击按钮时会创建 ImageView,然后将其动态添加到 LinearLayout 中。

LayoutParams 是您设置 ImageView 的高度和宽度的位置,尊重其父级,即 LinearLayout

关于java - 通过单击按钮创建 Imagebutton 的新实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24235904/

相关文章:

javascript - 构建与移动设备/平板电脑兼容的 Web 应用程序的最佳实践是什么

Java:导入语句与完全限定名称?

android - Gradle SourceSets 按 productFlavor 和 buildType

java - PercentRelativeLayout,如何以编程方式设置高度

java - 闪屏后崩溃

android - 如何启动一个新的 Activity 表单ListView并给它多个参数

javascript - ipad Javascript slider

flutter - 如何确保按钮始终固定在向上滑动面板的底部-Flutter

java - 使用 AND 条件进行一对多搜索

java - 如何使用 hashmap 通过数据库检索不同 editText 的值