安卓如何实现图中可以输入文字又可以插入图片的功能

安卓如何实现图中可以输入文字又可以插入图片的功能,第1张

如果不确定张数的话,最好还是动态插入式的实现比较好。比如在EditText下放一个LinearLayout,在代码里,每添加一张就使用LinearLayoutaddView(ImageView);添加一个。

如果就只有一张的话,那么就是EditText+ImageView就可以了。

EditText是View,不是ViewGroup。View里面是不能再放View的。

ViewGroup,继承它的有LinearLayout RelativeLayout等,这些可以往里面添加view或者其他viewgroup。

既然EditText已经是View的子类,无论如何也做不了ViewGroup的子类了,重写也是徒劳。

动态增加控件的基本思路就是:实例化控件-> 布局addView(控件) -> OnCreat中绑定布局控件 setContentView(布局)

例1:在LinearLayout中动态增加Button,EditText等控件,并且点击Button后,动态增加EditText等控件。

Java代码

1@Override

2 protected void onCreate(Bundle savedInstanceState) {

3 superonCreate(savedInstanceState);

4 final LinearLayout linearLayout=new LinearLayout(this);

5 linearLayoutsetOrientation(LinearLayoutVERTICAL);

6

7 LinearLayout linearLayout1 = new LinearLayout(this);

8 linearLayout1setOrientation(LinearLayoutVERTICAL);

9

10 Button button1= new Button(this);

11 button1setText("增加新项目");

12

13 Button button2 = new Button(this);

14 button2setText("增加新组");

15

16 linearLayoutaddView(button1);

17 linearLayoutaddView(button2);

18

19 //设定按钮单击监听器,动态增加控件

20 button2setOnClickListener(new ButtonOnClickListener(){

21 public void onClick(View v) {

22 Context context = vgetContext();

23 LinearLayout linearLayout2 = new LinearLayout(context);

24 linearLayout2setOrientation(LinearLayoutHORIZONTAL);

25

26 EditText groupNameEditText = new EditText(context);

27 //设置控件大小

28 groupNameEditTextsetWidth(160);

29

30 ImageButton imagebutton1 = new ImageButton(context);

31 Button saveButton = new Button(context);

32 Button exitButton = new Button(context);

33

34 linearLayout2addView(groupNameEditText);

35 linearLayout2addView(imagebutton1);

36 linearLayout2addView(saveButton);

37 linearLayout2addView(exitButton);

38 linearLayoutaddView(linearLayout2);

39

40 }

41 });

42

43 setContentView(linearLayout);

44 }

45

Android的listview和spinner等组件都采用了MVC模式来 *** 作数据,也就是说,不能直接调用组件类的方法(如add或其他类似的方法)来添加、删除数据。而要通过一个Adapter对象(SimpleAdapter、ArrayAdapter等)来完成这个工作。ListView相当于MVC中的V(视图层),用来显示数据。Adapter对象相当于C(控制层),用来将数据(数组、List)与ListView连接在一起。因此, *** 作数据需要在Adapter对象中进行。如果列表项很复杂,可以自定义Adapter类(一般从BaseAdapter类继承)。然后在Adapter类中添加相应的增加、删除等方法。当然,也可以直接更改数据源(数组或List对象),然后调用Adapter类的notifyDataSetChanged方法来通知Adapter对象数据已经改变。ListView或Spinner会自动更新相应的列表项。最近在写一本关于Android开发的书,里面详细介绍了这个过程,并提供了大量的例子以供参考。

现在有父布局LinearLayout id为payItemts

有子布局LinearLayout id为payItem

子布局payItem中包含一个id为accountName的spinner、一个id为payMoney的EditText

在activity中,通过有一个按钮btA,可以动态的往父布局中添加子布局,每点击一次,动态添加一个item

有一个btB,如何通过点击btB获取Activity中所有Spinner的内容?(spinner可能有多个)

现在纠结的点在于:

果通过点击btB,在onClick方法中,通过for循环和getChildAt方法获取到每个子布局,再通过findViewById获取到

Spinner,那么就无法获取到Spinner选中的内容了,因为点击了按钮之后,才会执行Spinner的onItemSelected方法是在点击

了btB之后执行的

如果直接在onCreate方法中获取Spinner,那么动态添加的Spinner就无法获取到了

请问该怎么解决啊

在做一个记账APP,有一个功能是添加一笔支出,因为每笔支出可能由多中付款方式组成

所以付款方式那块儿就采用了动态生成,每点击一下按钮,生成一个item,每个item是一个LinearLayout,由一个spinner和一个edittext组成

填写完成之后,点击提交按钮,得到所有item中的付款方式以及金额综合

Attribute对应layout xml里面的属性,想了解Attribute用法, 参考下面的方法或类XmlasAttributeSet(XmlPullParser parser)XmlPullParser ContextobtainStyledAttributes(AttributeSet set, int[] attrs, int defStyleAttr, int defStyleRes)TypedArray

以上就是关于安卓如何实现图中可以输入文字又可以插入图片的功能全部的内容,包括:安卓如何实现图中可以输入文字又可以插入图片的功能、android开发在EditText中添加任意一个View、如何动态添加Activity等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9525171.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-29
下一篇 2023-04-29

发表评论

登录后才能评论

评论列表(0条)

保存