可以在运行时填充 Android 活动吗?

罗宾·罗德里克斯

尽管典型的过程是使用 AXML 定义屏幕内容,但是否可以在运行时填充 Activity?

像这样的东西:

override void OnCreate(Bundle bundle){
    base.OnCreate(bundle);

    // INSTEAD OF THIS:
    var toolbar = FindViewById<Toolbar>(....);

    // CAN I DO THIS?
    var toolbar = New<Toolbar>(....);
 }
EAK团队

这是帮助您入门的示例代码

在 XAMARIN 中使用 C#

var layout = new LinearLayout (this);
layout.Orientation = Orientation.Vertical;

var aLabel = new TextView (this);
aLabel.Text = "Hello, World!!!";

var aButton = new Button (this);
aButton.Text = "Say Hello!";

aButton.Click +=(sender, e) => 
{aLabel.Text="Hello Android!";};

layout.AddView (aLabel);
layout.AddView (aButton);
SetContentView (layout);  

在安卓工作室中使用 Java

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.Gravity;
import android.view.View;
import android.view.ViewGroup;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.TextView;
import android.widget.Toast;
import android.widget.ToggleButton;
import android.widget.LinearLayout.LayoutParams;

public class DynamicLayoutActivity extends Activity implements OnClickListener{

private static final int MY_BUTTON = 9000;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    LinearLayout ll = (LinearLayout)findViewById(R.id.linearLayout2);

    // add text view
    TextView tv = new TextView(this);
    tv.setText("Dynamic Text!");
    ll.addView(tv);

    // add edit text
    EditText et = new EditText(this);
    et.setText("Dynamic EditText!");
    et.setMinLines(1);
    et.setMaxLines(3);
    ll.addView(et);

    // add button
    Button b = new Button(this);
    b.setText("Button added dynamically!");
    b.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
    b.setId(MY_BUTTON);
    b.setOnClickListener(this);
    ll.addView(b);

    //add checkboxes
    for(int i = 0; i < 10; i++) {
        CheckBox cb = new CheckBox(this);
        cb.setText("Dynamic Checkbox " + i);
        cb.setId(i+10);
        ll.addView(cb);
    }

    //add radio buttons
    final RadioButton[] rb = new RadioButton[5];
    RadioGroup rg = new RadioGroup(this); //create the RadioGroup
    rg.setOrientation(RadioGroup.HORIZONTAL);//or RadioGroup.VERTICAL
    for(int i=0; i<5; i++){
        rb[i]  = new RadioButton(this);
        rb[i].setText("Dynamic Radio Button " + i);
        rb[i].setId(i);
        rg.addView(rb[i]); //the RadioButtons are added to the radioGroup instead of the layout

    }
    ll.addView(rg);//you add the whole RadioGroup to the layout

    // add Toggle button
    ToggleButton tb = new ToggleButton(this);
    tb.setTextOn("Dynamic Toggle Button - ON");
    tb.setTextOff("Dynamic Toggle Button - OFF");
    tb.setChecked(true);
    tb.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
    ll.addView(tb);

}

public void onClick(View v) {
    Toast toast;
    Log.w("ANDROID DYNAMIC VIEWS:", "View Id: " + v.getId());
    switch (v.getId()) {
    case MY_BUTTON:
        toast = Toast.makeText(this, "Clicked on my dynamically added button!", Toast.LENGTH_LONG);
        toast.setGravity(Gravity.TOP, 25, 400);
        toast.show();
        saveAnswers();
        break;
        // More buttons go here (if any) ...

    }
}

public void saveAnswers() {
    LinearLayout root = (LinearLayout) findViewById(R.id.linearLayout1); //or whatever your root control is
    loopQuestions(root);
}

private void loopQuestions(ViewGroup parent) {
    for(int i = 0; i < parent.getChildCount(); i++) {
        View child = parent.getChildAt(i);
        if(child instanceof RadioGroup ) {
            //Support for RadioGroups
            RadioGroup radio = (RadioGroup)child;
            storeAnswer(radio.getId(), radio.getCheckedRadioButtonId());
        }
        else if(child instanceof CheckBox) {
            //Support for Checkboxes
            CheckBox cb = (CheckBox)child;
            int answer = cb.isChecked() ? 1 : 0;
            storeAnswer(cb.getId(), answer);
        }
        else if(child instanceof EditText) {
            //Support for EditText
            EditText et = (EditText)child;
            Log.w("ANDROID DYNAMIC VIEWS:", "EdiText: " + et.getText());
        }
        else if(child instanceof ToggleButton) {
            //Support for ToggleButton
            ToggleButton tb = (ToggleButton)child;
            Log.w("ANDROID DYNAMIC VIEWS:", "Toggle: " + tb.getText());
        }
        else {
            //Support for other controls
        }

        if(child instanceof ViewGroup) {
            //Nested Q&A
            ViewGroup group = (ViewGroup)child;
            loopQuestions(group);
        }
    }
}

private void storeAnswer(int question, int answer) {
    Log.w("ANDROID DYNAMIC VIEWS:", "Question: " + String.valueOf(question) + " * "+ "Answer: " + String.valueOf(answer) );

    Toast toast = Toast.makeText(this, String.valueOf(question) + " * "+ "Answer: " + String.valueOf(answer), Toast.LENGTH_LONG);
    toast.setGravity(Gravity.TOP, 25, 400);
    toast.show();


}

}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Android / Google Play-应用程序可以在运行时进行更新吗

来自分类Dev

Android活动可以自称吗?

来自分类Dev

Android活动可以自称吗?

来自分类Dev

我可以在运行时在活动的Python Shell中更改模块的属性吗?

来自分类Dev

我可以在运行时在活动的Python Shell中更改模块的属性吗?

来自分类Dev

可以在运行时使用Javascript创建函数吗?

来自分类Dev

Vulkan层可以在运行时更改吗?

来自分类Dev

可以在运行时自定义FilterProvider吗?

来自分类Dev

可以在运行时设置no_console_suspend吗?

来自分类Dev

我可以在运行时检查内置类型吗?

来自分类Dev

我可以在运行时更新 AMQP 设置吗?

来自分类Dev

在Android中,可以在运行时在单个XML布局的TextView中应用不同的主题,而无需创建自定义窗口小部件吗?

来自分类Dev

finish()之后可以恢复Android活动吗?

来自分类Dev

Android 应用程序在运行时“不幸地停止”。错误是没有找到处理意图的活动

来自分类Dev

Xamarin:如何在运行时将以下 android 主题应用于我的活动?

来自分类Dev

Android:在运行时获取TargetSDKVersion

来自分类Dev

在运行时访问Android内存

来自分类Dev

在运行时访问Android内存

来自分类Dev

Android在运行时保存变量

来自分类Dev

Java:我可以在运行时将运行时异常注入到任意类方法中吗?

来自分类Dev

Android-我可以获取总运行时间吗?

来自分类Dev

我们可以在android M服务中使用需要运行时权限的功能吗?

来自分类Dev

我可以在运行时运行C#文件吗

来自分类Dev

Android:在运行时使TextView文本的一部分不可点击吗?

来自分类Dev

Java:是否可以在运行时将代理添加/附加到活动对象实例?

来自分类Dev

Java:是否可以在运行时将代理添加/附加到活动对象实例?

来自分类Dev

xml 有变量吗?那么某些部分可以在运行时更换吗?

来自分类Dev

Android 清单活动名称生成运行时异常

来自分类Dev

是否可以在运行时从Android VM中检测ABI?

Related 相关文章

  1. 1

    Android / Google Play-应用程序可以在运行时进行更新吗

  2. 2

    Android活动可以自称吗?

  3. 3

    Android活动可以自称吗?

  4. 4

    我可以在运行时在活动的Python Shell中更改模块的属性吗?

  5. 5

    我可以在运行时在活动的Python Shell中更改模块的属性吗?

  6. 6

    可以在运行时使用Javascript创建函数吗?

  7. 7

    Vulkan层可以在运行时更改吗?

  8. 8

    可以在运行时自定义FilterProvider吗?

  9. 9

    可以在运行时设置no_console_suspend吗?

  10. 10

    我可以在运行时检查内置类型吗?

  11. 11

    我可以在运行时更新 AMQP 设置吗?

  12. 12

    在Android中,可以在运行时在单个XML布局的TextView中应用不同的主题,而无需创建自定义窗口小部件吗?

  13. 13

    finish()之后可以恢复Android活动吗?

  14. 14

    Android 应用程序在运行时“不幸地停止”。错误是没有找到处理意图的活动

  15. 15

    Xamarin:如何在运行时将以下 android 主题应用于我的活动?

  16. 16

    Android:在运行时获取TargetSDKVersion

  17. 17

    在运行时访问Android内存

  18. 18

    在运行时访问Android内存

  19. 19

    Android在运行时保存变量

  20. 20

    Java:我可以在运行时将运行时异常注入到任意类方法中吗?

  21. 21

    Android-我可以获取总运行时间吗?

  22. 22

    我们可以在android M服务中使用需要运行时权限的功能吗?

  23. 23

    我可以在运行时运行C#文件吗

  24. 24

    Android:在运行时使TextView文本的一部分不可点击吗?

  25. 25

    Java:是否可以在运行时将代理添加/附加到活动对象实例?

  26. 26

    Java:是否可以在运行时将代理添加/附加到活动对象实例?

  27. 27

    xml 有变量吗?那么某些部分可以在运行时更换吗?

  28. 28

    Android 清单活动名称生成运行时异常

  29. 29

    是否可以在运行时从Android VM中检测ABI?

热门标签

归档