返回顶部
首页 > 资讯 > 精选 >如何在Android中动态添加一个view
  • 230
分享到

如何在Android中动态添加一个view

androidview 2023-05-30 19:05:38 230人浏览 八月长安
摘要

如何在Android中动态添加一个view?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。<?xml version="1.0" 

如何在Android中动态添加一个view?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

<?xml version="1.0" encoding="utf-8"?><ScrollView xmlns:android="Http://schemas.android.com/apk/res/android"  android:layout_width="match_parent"  android:layout_height="wrap_content">  <RelativeLayout    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="vertical"    android:padding="10dp">    <LinearLayout      android:id="@+id/ll_addView"      android:layout_width="match_parent"      android:layout_height="wrap_content"      android:orientation="vertical" />    <Button      android:id="@+id/btn_getData"      android:layout_width="match_parent"      android:layout_height="wrap_content"      android:layout_below="@+id/ll_addView"      android:layout_marginTop="10dp"      android:background="@drawable/em_btn_green_selector"      android:text="获取数据" />  </RelativeLayout></ScrollView>

再看看要添加的item_hotel_evaluate里面的布局:

<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"  android:id="@+id/rl_hotelName"  android:layout_width="match_parent"  android:layout_height="wrap_content"  android:background="@drawable/editbox_background_nORMal">  <LinearLayout    android:id="@+id/rl_addHotel"    android:layout_width="match_parent"    android:layout_height="wrap_content"    android:orientation="horizontal">    <TextView      android:id="@+id/tv_hotelName"      android:layout_width="0dp"      android:layout_height="wrap_content"      android:layout_marginLeft="5dp"      android:layout_weight="1"      android:text="酒店名称:"      android:textSize="18sp" />    <EditText      android:id="@+id/ed_hotelName"      android:layout_width="0dp"      android:layout_height="wrap_content"      android:layout_weight="2"      android:background="@drawable/editbox_background_normal"      android:padding="5dp"      android:singleLine="true" />    <Button      android:id="@+id/btn_addHotel"      android:layout_width="0dp"      android:layout_height="30dp"      android:layout_weight="1"      android:background="@drawable/em_btn_green_selector"      android:text="+新增"      android:textColor="@color/white"      android:textSize="18sp" />  </LinearLayout>  <LinearLayout    android:id="@+id/ll_addHotelEvaluate"    android:layout_width="match_parent"    android:layout_height="wrap_content"    android:layout_below="@+id/rl_addHotel"    android:layout_marginTop="5dp"    android:orientation="vertical">    <RelativeLayout      android:id="@+id/rl_hotelEvaluate"      android:layout_width="match_parent"      android:layout_height="wrap_content"      android:layout_below="@+id/rl_addHotel"      android:layout_marginTop="5dp"      android:orientation="horizontal">      <TextView        android:id="@+id/tv_hotelServer"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_alignParentLeft="true"        android:layout_alignParentStart="true"        android:layout_centerVertical="true"        android:layout_gravity="center_vertical"        android:layout_marginLeft="5dp"        android:layout_weight="1"        android:text="服务评价:"        android:textSize="18sp" />      <RatingBar        android:id="@+id/rb_hotel_evaluate"                android:layout_width="wrap_content"        android:layout_height="20dp"        android:layout_toRightOf="@+id/tv_hotelServer"        android:numStars="5"        android:rating="0"        android:stepSize="1.0" />    </RelativeLayout>    <EditText      android:id="@+id/ed_hotelEvaluate"      android:layout_width="match_parent"      android:layout_height="wrap_content"      android:layout_below="@+id/rl_server"      android:background="@drawable/editbox_background_normal"      android:singleLine="true" />  </LinearLayout></RelativeLayout>

布局好了,因为Activity里面的代码写不是很多,直接上代码了,然后在最后分析一下:

package com.bob.lucking.activity;import android.app.Activity;import android.os.Bundle;import android.support.annotation.Nullable;import android.util.Log;import android.view.View;import android.widget.Button;import android.widget.EditText;import android.widget.LinearLayout;import android.widget.RatingBar;import com.bob.lucking.R;public class DynamicAddViewActivity extends Activity implements View.OnClickListener {  private String TAG = this.getClass().getSimpleName();  //装在所有动态添加的Item的LinearLayout容器  private LinearLayout addHotelNameView;  @Override  protected void onCreate(@Nullable Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    setContentView(R.layout.activity_dynamic);    addHotelNameView = (LinearLayout) findViewById(R.id.ll_addView);    findViewById(R.id.btn_getData).setOnClickListener(this);    //默认添加一个Item    addViewItem(null);  }  @Override  public void onClick(View v) {    switch (v.getId()) {      case R.id.btn_addHotel://点击添加按钮就动态添加Item        addViewItem(v);        break;      case R.id.btn_getData://打印数据        printData();        break;    }  }    private void sortHotelViewItem() {    //获取LinearLayout里面所有的view    for (int i = 0; i < addHotelNameView.getChildCount(); i++) {      final View childAt = addHotelNameView.getChildAt(i);      final Button btn_remove = (Button) childAt.findViewById(R.id.btn_addHotel);      btn_remove.setText("删除");      btn_remove.setTag("remove");//设置删除标记      btn_remove.setOnClickListener(new View.OnClickListener() {        @Override        public void onClick(View v) {        //从LinearLayout容器中删除当前点击到的ViewItem         addHotelNameView.removeView(childAt);        }      });      //如果是最后一个ViewItem,就设置为添加      if (i == (addHotelNameView.getChildCount() - 1)) {        Button btn_add = (Button) childAt.findViewById(R.id.btn_addHotel);        btn_add.setText("+新增");        btn_add.setTag("add");        btn_add.setOnClickListener(this);      }    }  }  //添加ViewItem  private void addViewItem(View view) {    if (addHotelNameView.getChildCount() == 0) {//如果一个都没有,就添加一个      View hotelEvaluateView = View.inflate(this, R.layout.item_hotel_evaluate, null);      Button btn_add = (Button) hotelEvaluateView.findViewById(R.id.btn_addHotel);      btn_add.setText("+新增");      btn_add.setTag("add");      btn_add.setOnClickListener(this);      addHotelNameView.addView(hotelEvaluateView);      //sortHotelViewItem();    } else if (((String) view.getTag()).equals("add")) {//如果有一个以上的Item,点击为添加的Item则添加      View hotelEvaluateView = View.inflate(this, R.layout.item_hotel_evaluate, null);      addHotelNameView.addView(hotelEvaluateView);      sortHotelViewItem();    }     //else {     // sortHotelViewItem();    //}  }  //获取所有动态添加的Item,找到控件的id,获取数据  private void printData() {    for (int i = 0; i < addHotelNameView.getChildCount(); i++) {      View childAt = addHotelNameView.getChildAt(i);      EditText hotelName = (EditText) childAt.findViewById(R.id.ed_hotelName);      RatingBar hotelEvaluateStart = (RatingBar) childAt.findViewById(R.id.rb_hotel_evaluate);      EditText hotelEvaluate = (EditText) childAt.findViewById(R.id.ed_hotelEvaluate);      Log.e(TAG, "酒店名称:" + hotelName.getText().toString() + "-----评价星数:"          + (int) hotelEvaluateStart.getRating() + "-----服务评价:" + hotelEvaluate.getText().toString());    }  }}

最后我们来解读一下代码:

onCreate里面初始化控件并设置事件,同时我们默认添加一条item,因为addHotelNameView容器初始化时里面没有子view,所以我们默认给添加的方法传null,

在addViewItem方法时,里面有初始化并设置button方法,所以在onclick方法里面把事件的v传入是为了做标记,也就是设置tag,,在添加时会有两种情况:

1.如果只有一条,我们只能显示添加

2.有多条的情况下,如果点击的是设置有tag为add标记的添加,则添加

如果点击删除,在sortHotelViewItem方法里面已经设置过删除点击事件,直接从内存中删除,

最后是获取数据,我们可以通过LinearLayout容器来遍历addHotelNameView.getChildCount()获取所有添加的item,然后找到控件的id去获取所有添加的item数据。

再这里注释一下:在addViewItem方法里面看到可以优化,上传资源时已经打包好了,现在在这里用单行注释掉了4行,添加第一个item时不需要排序的,还有就是else里面的是死代码,下载资源的朋友些可以删除这几行。

关于如何在Android中动态添加一个view问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注编程网精选频道了解更多相关知识。

--结束END--

本文标题: 如何在Android中动态添加一个view

本文链接: https://lsjlt.com/news/220832.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 如何在Android中动态添加一个view
    如何在Android中动态添加一个view?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。<xml version="1.0" ...
    99+
    2023-05-30
    android view
  • Android动态添加view的方法示例
    由于项目需求菜单写活,效果如下:这里的按钮数量是可变的.png由于不是可滑动控件,我用的百分比布局做的适配 LinearLayout typeLayout = (LinearLayout) headerView.findViewById(R...
    99+
    2023-05-30
    android 动态 添加view
  • 怎么在Android应用中添加一个添加物品动画
    这篇文章将为大家详细讲解有关怎么在Android应用中添加一个添加物品动画,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。开发环境:AndroidStudio2.1.2+gradle-2.10...
    99+
    2023-05-31
    android roi
  • Android动态添加View的问题解决方法
    后台代码 代码如下:    private void ChangeView()    {  &n...
    99+
    2022-06-06
    view 方法 Android
  • 基于Android在布局中动态添加view的两种方法(总结)
    一、说明 添加视图文件的时候有两种方式:1、通过在xml文件定义layout;2、java代码编写二、前言说明1.构造xml文件2.LayoutInflater提到addview,首先要了解一下LayoutInflater类。这个类最主要的...
    99+
    2023-05-30
    android 动态添加 view
  • 如何在Android应用中添加一个按钮功能
    这期内容当中小编将会给大家带来有关如何在Android应用中添加一个按钮功能,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。1、首先创建一个按钮<Buttonandroid:id="@+id...
    99+
    2023-05-31
    android roi
  • 如何在Android应用中添加一个菜单功能
    这篇文章将为大家详细讲解有关如何在Android应用中添加一个菜单功能,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。开发环境:AndroidStudio2.1.2部分代码(Activity)...
    99+
    2023-05-31
    android roi
  • 如何在Android应用中添加一个日期选择器
    这期内容当中小编将会给大家带来有关如何在Android应用中添加一个日期选择器,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。具体代码如下所示://出生年月设置private void birthSetti...
    99+
    2023-05-31
    android roi
  • 如何在Android应用中添加一个自定义弹框
    如何在Android应用中添加一个自定义弹框?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。实现步骤:1.xml布局实现<&#63;xml vers...
    99+
    2023-05-31
    android roi
  • 详解如何在Vue中动态添加类名
    目录静态和动态类有条件的类名使用数组语法使用对象语法与自定义组件一起使用快速生成类名使用计算属性来简化类能够向组件添加动态类名是非常强大的功能。它使我们可以更轻松地编写自定义主题,根...
    99+
    2024-04-02
  • 如何在Android中实现一个在图片中添加文字功能
    这篇文章给大家介绍如何在Android中实现一个在图片中添加文字功能,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。Android自定义实现图片加文字功能分四步来写: 1,组合控件的xml; 2,自定义组合控件的属性; ...
    99+
    2023-05-31
    android roi %d
  • Dreamweaver如何给网站添加一个动态横幅效果
    小编给大家分享一下Dreamweaver如何给网站添加一个动态横幅效果,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!为什么要给网站添加动态横幅?一方面,是图片不容...
    99+
    2023-06-08
  • sql如何在一个表中添加字段并添加备注
    这篇文章主要介绍sql如何在一个表中添加字段并添加备注,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!1、加字段:alter table 表名 ADD 字段名 类型;eg:alter&...
    99+
    2024-04-02
  • 如何在Android应用中实现一个图片添加功能
    如何在Android应用中实现一个图片添加功能?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。1、首先这是用GridView实现的<&#63;xml...
    99+
    2023-05-31
    android roi
  • Android viewpager中动态添加view并实现伪无限循环的方法
    本文实例讲述了Android viewpager中动态添加view并实现伪无限循环的方法。分享给大家供大家参考,具体如下: viewpager的使用,大家都熟悉,它可以实现页面...
    99+
    2022-06-06
    方法 循环 viewpager 动态 Android
  • Vue一个动态添加background-image的实现
    目录Vue一个动态添加background-imageVue踩坑background-image路径结合实际情况,处理方法如下扩展:图片格式(base64)总结Vue一个动态添加ba...
    99+
    2023-03-11
    Vue动态添加 Vue background-image Vue添加background-image
  • 如何在Android中利用View实现一个等级滑动条功能
    这篇文章将为大家详细讲解有关如何在Android中利用View实现一个等级滑动条功能,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。思路: 首先绘制直线,然后等分直线绘制点; 绘制点...
    99+
    2023-05-31
    android view roi
  • 如何Android项目中创建一个View
    这篇文章将为大家详细讲解有关如何Android项目中创建一个View,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。从布局文件到LayoutParams首先从Activity的setConte...
    99+
    2023-05-31
    android view roi
  • 在Android中动态添加Panel框架的实现代码
    这里说是框架,说的大了点,其实没有那么复杂,只是一个容易扩展的基类而已。不过至少算是框架类的代码。 代码如下:package arui;  import androi...
    99+
    2022-06-06
    panel 动态 Android
  • Android中如何给任何view添加全屏倾斜水印
    小编给大家分享一下Android中如何给任何view添加全屏倾斜水印,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!如果要实现如下效果目前有两种思路:先画出带有水平...
    99+
    2023-05-30
    android
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作