栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 移动开发 > Android

Android动态添加设置布局与控件的方法

Android 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Android动态添加设置布局与控件的方法

本文实例讲述了Android动态添加设置布局与控件的方法。分享给大家供大家参考,具体如下:

有时候我们会在代码端,动态的设置,添加布局和控件。下面我们就看来看一下如何处理,直接上代码,代码里面的注解很清楚了。

布局文件:fragment_hot.xml

说明:这个部局,我用的是scrollView做为基础布局,主要是为了实现一个滚动。这里不多说,这个你可以使用任何布局都可以,这里的id我是提前定义的。

这里面的现在有的布局是我为了看到我在代码端,动态添加的代码,是否可以追加到现有布局的后面而加上,这里大家可以自己设置



  
    
      
 
      
      
 
 
 
 
      
      
 
 
      
    
    
      
 
      
      
 
 
 
 
      
      
 
 
      
    
  


一个背景图文件在drawable文件夹中

rectangle_radius_fen.xml

说明:很简单,就是设置一个有圆角的方形



  
  
  
  
  
  


后台代码:

fragment_hot.java

说明:这里不多说了,里面的注解很明确了

package com.example.cg.fangduo;
import android.content.Context;
import android.graphics.Color;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.util.TypedValue;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.ScrollView;
import android.widget.TextView;

public class fragment_hot extends Fragment {
  //定义当前页面
  private View view;
  private LinearLayout line_fragment_hot_main;
  private ScrollView id_stickynavlayout_innerscrollview;
  @Override
  public View onCreateView(LayoutInflater inflater, ViewGroup container,
 Bundle savedInstanceState) {
    view = inflater.inflate(R.layout.fragment_hot, container, false);
    id_stickynavlayout_innerscrollview = (ScrollView)view.findViewById(R.id.id_stickynavlayout_innerscrollview);
    line_fragment_hot_main = (LinearLayout)view.findViewById(R.id.line_fragment_hot_main);
    for(int i=0;i<10;i++) {
      
      LinearLayout itemMain = new LinearLayout(getActivity());
      itemMain.setOrientation(LinearLayout.HORIZONTAL); //设置linearLayout是横向还是竖各
      LinearLayout.LayoutParams itemMainparams = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, dip2px(getActivity(), 80)); //设置宽与高
      itemMainparams.setMargins(0,dip2px(getActivity(),1),0,0); //设置每个item与上一个控件的间隔是1dip
      itemMain.setLayoutParams(itemMainparams);
      itemMain.setBackgroundColor(Color.WHITE); //设置背景色
      itemMain.setVerticalGravity(Gravity.CENTER); //设置对齐方式
      
      LinearLayout itempic = new LinearLayout(getActivity());
      itempic.setOrientation(LinearLayout.HORIZONTAL);
      LinearLayout.LayoutParams itempicparams = new LinearLayout.LayoutParams(0, dip2px(getActivity(), 70), 1);
      itempic.setLayoutParams(itempicparams);
      itempic.setVerticalGravity(Gravity.CENTER_VERTICAL);
      
      ImageView imgPic = new ImageView(getActivity());
      imgPic.setImageResource(R.drawable.desktop_device);
      LinearLayout.LayoutParams imgPicparams = new LinearLayout.LayoutParams(dip2px(getActivity(), ViewGroup.LayoutParams.WRAP_CONTENT), dip2px(getActivity(), ViewGroup.LayoutParams.WRAP_CONTENT));
      imgPicparams.leftMargin = dip2px(getActivity(), 5);
      imgPicparams.gravity = Gravity.LEFT;  //必须要加上这句,setMargins才会起作用,而且此句还必须在setMargins下面
      imgPic.setLayoutParams(imgPicparams);
      
      itempic.addView(imgPic, imgPicparams);
      
      itemMain.addView(itempic);
      
      LinearLayout itemtext = new LinearLayout(getActivity());
      itemtext.setOrientation(LinearLayout.VERTICAL);
      LinearLayout.LayoutParams itemtextparams = new LinearLayout.LayoutParams(0, dip2px(getActivity(), 70), 1);
      itemtext.setLayoutParams(itemtextparams);
      itemtext.setVerticalGravity(Gravity.CENTER_VERTICAL);
      TextView txtOne = new TextView(getActivity());
      txtOne.setText("珠江俊景小区");
      txtOne.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 12); //设置字号,并且设置它的单位为dip
      txtOne.getPaint().setFakeBoldText(true); //字体加租
      LinearLayout.LayoutParams txtoneparams = new LinearLayout.LayoutParams(dip2px(getActivity(), ViewGroup.LayoutParams.WRAP_CONTENT), dip2px(getActivity(), ViewGroup.LayoutParams.WRAP_CONTENT));
      txtOneparams.weight = 1;
      txtOneparams.setMargins(0, 0, 0, 0);
      txtOneparams.gravity = Gravity.LEFT;
      txtOne.setLayoutParams(txtOneparams);
      itemtext.addView(txtOne);
      TextView txtTwo = new TextView(getActivity());
      txtTwo.setText("哈尔滨");
      txtTwo.getPaint().setFakeBoldText(true);
      txtTwo.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 8);
      LinearLayout.LayoutParams txtTwoparams = new LinearLayout.LayoutParams(dip2px(getActivity(), ViewGroup.LayoutParams.WRAP_CONTENT), dip2px(getActivity(), ViewGroup.LayoutParams.WRAP_CONTENT));
      txtTwoparams.weight = 1;
      txtTwo.setLayoutParams(txtTwoparams);
      itemtext.addView(txtTwo);
      TextView txtThree = new TextView(getActivity());
      txtThree.setText("一万抵五万");
      txtThree.getPaint().setFakeBoldText(true);
      txtThree.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 8);
      txtThree.setLayoutParams(txtOneparams);
      itemtext.addView(txtThree);
      TextView txtFour = new TextView(getActivity());
      txtFour.setText("8000元/m");
      txtFour.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 10);
      txtFour.setTextColor(Color.parseColor("#F97F49"));
      txtFour.getPaint().setFakeBoldText(true);
      txtFour.setLayoutParams(txtOneparams);
      itemtext.addView(txtFour);
      itemMain.addView(itemtext);
      
      LinearLayout line_right_text = new LinearLayout(getActivity());
      line_right_text.setOrientation(LinearLayout.HORIZONTAL);
      LinearLayout.LayoutParams rightparams = new LinearLayout.LayoutParams(0, dip2px(getActivity(), 70), 1);
      line_right_text.setLayoutParams(rightparams);
      line_right_text.setGravity(Gravity.RIGHT);  //右对齐
      TextView daytxt = new TextView(getActivity());
      LinearLayout.LayoutParams daytxtparams = new LinearLayout.LayoutParams(dip2px(getActivity(), ViewGroup.LayoutParams.WRAP_CONTENT), dip2px(getActivity(), ViewGroup.LayoutParams.WRAP_CONTENT));
      daytxt.setLayoutParams(daytxtparams);
      daytxt.setText("剩2天");
      daytxt.setTextColor(Color.parseColor("#F97F49")); //设置颜色
      daytxt.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 10); //设置文字大小
      daytxt.getPaint().setFakeBoldText(true); //设置文字样式,加粗
      //daytxt.setPadding(0,2,2,0);
      line_right_text.addView(daytxt);
      TextView tuantxt = new TextView(getActivity());
      LinearLayout.LayoutParams tuantxtparams = new LinearLayout.LayoutParams(dip2px(getActivity(), 12), dip2px(getActivity(), 12));
      tuantxtparams.setMargins(dip2px(getActivity(), 2), dip2px(getActivity(), 0), dip2px(getActivity(), 5), 0);
      tuantxt.setLayoutParams(tuantxtparams);
      tuantxt.setBackgroundResource(R.drawable.rectangle_radius_fen);  //设置textView背景图片
      tuantxt.setGravity(Gravity.CENTER);
      tuantxt.setText("团");
      txtFour.getPaint().setFakeBoldText(true);
      tuantxt.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 8);
      tuantxt.setTextColor(Color.parseColor("#ffffff"));
      line_right_text.addView(tuantxt);
      itemMain.addView(line_right_text);
      line_fragment_hot_main.addView(itemMain);
    }
    return view;
  }
  
  public static int dip2px(Context context, float dipValue){
    final float scale = context.getResources().getDisplayMetrics().density;
    return (int)(dipValue * scale + 0.5f);
  }
  
  public static int px2sp(Context context, float pxValue) {
    final float fontScale = context.getResources().getDisplayMetrics().scaledDensity;
    return (int) (pxValue / fontScale + 0.5f);
  }
  
  public static int sp2px(Context context, float spValue) {
    final float fontScale = context.getResources().getDisplayMetrics().scaledDensity;
    return (int) (spValue * fontScale + 0.5f);
  }
}

效果图:

希望本文所述对大家Android程序设计有所帮助。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/163578.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号