浅谈如何获得布局对象

    xiaoxiao2021-03-25  70

    方法一 :先用xml文件进行静态布局,然后利用反射器LayoutInflater类调用方法getLayoutInflater()获取对象,将容器对象加载到VIEW类里,设置监听

    LayoutInflater inflater =getLayoutInflater();  

    LinearLayout ly = (LinearLayout) inflater.inflate(R.layout.testview,null);  

    setContentView(ly);  

    Button testbtn = (Button)ly.findViewById(R.id.testBtn);  

    final TextView dispalyView = (TextView)ly.findViewById(R.id.disPlayView);  

    testbtn.setOnClickListener(new View.OnClickListener() 

    { @Override  

    public void onClick(View v) 

    { dispalyView.setText("测试");  

    }  

    });

    方法二:利用getSystemService(LAYOUT_INFLATER_SERVICE)获取布局文件

    LayoutInflater inflater =(LayoutInflater) getSystemService(LAYOUT_INFLATER_SERVICE);  

    LinearLayout ly = (LinearLayout) inflater.inflate(R.layout.testview,null);  

    setContentView(ly);  

    Button testbtn = (Button)ly.findViewById(R.id.testBtn);  

    final TextView dispalyView = (TextView)ly.findViewById(R.id.disPlayView);  

    testbtn.setOnClickListener(new View.OnClickListener() 

    { @Override  

    public void onClick(View v) {  

    } });

    方法三:

    无需静态布局实现测试效果

    LinearLayout ly =new LinearLayout(this);  

    ly.setOrientation(LinearLayout.VERTICAL);  

    ly.setLayoutParams(new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));  

    //设置控件  

    final TextView dispalyView = new TextView(this);  

    dispalyView.setLayoutParams(new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT,ViewGroup.LayoutParams.WRAP_CONTENT)); dispalyView.setText("测试"); //可以设置相关属性    

    ly.addView(dispalyView);  

    Button button1 = new Button(this);  

    button1.setLayoutParams(new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT,ViewGroup.LayoutParams.WRAP_CONTENT)); button1.setText("测试按钮1");  

    ly.addView(button1);  

    button1.setOnClickListener(new View.OnClickListener() //监听

    { @Override  

    public void onClick(View v) {  

    } });  

    setContentView(ly);//加载LinearLayout对象

    LayoutInflater是用来找layout下的xml布局文件,并且实例化;而findViewById()是找xml布局文件的具体控件,如Button、TextView等。

    转载请注明原文地址: https://ju.6miu.com/read-37902.html

    最新回复(0)