Android动态生成组件

5月份到8月份,随着大军我也准备了考研,可是越到后来越发现考研不适合自己,于是乎近日又开始重新开始安卓学习,废话不多说。

今天学习了布局,于是用布局和动态生成组件做一个短信发送器,效果图:




现在想要实现,当点击发送按钮时文本会自动显示到电话的下面,也就是需要动态生成一个TextView用于显示文本,故需要添加一个用于垂直显示的LinearLayout布局节点。


布局文件如下:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity" >

    <RelativeLayout 
        android:id="@+id/sessionFrame" 
        android:layout_height="wrap_content"
        android:layout_width="fill_parent"             
        >        
        <TextView
        android:id="@+id/text" 
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/hello_world" />
        <EditText 
        android:id="@+id/number" 
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_toRightOf="@id/text"
        android:layout_alignBaseline="@id/text"
        android:layout_marginLeft="10dp"
        android:inputType="number"
            />        
    </RelativeLayout>


    <LinearLayout 
        android:id="@+id/mainFrame"
        android:layout_height="wrap_content"
        android:layout_width="wrap_content"
        android:layout_below="@id/sessionFrame"
        android:orientation="vertical"
        >
        
    </LinearLayout>
	<EditText
	    android:id="@+id/content"
	    android:layout_width="wrap_content"
	    android:layout_height="wrap_content"
	    android:layout_alignParentLeft="true"
	    android:layout_below="@id/mainFrame"
	    android:layout_centerVertical="true"
	    android:layout_marginTop="24dp"
	    android:ems="10"
	    android:inputType="textMultiLine" >

        <requestFocus />
    </EditText>
    <Button 
        android:id="@+id/send"
        android:text="@string/send"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@id/content"
        />
   
</RelativeLayout>

核心代码:

public class MainActivity extends Activity {	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		
		final LinearLayout relayout=(LinearLayout)findViewById(R.id.mainFrame);

		final EditText num=(EditText)findViewById(R.id.number);
		final EditText cont=(EditText)findViewById(R.id.content);
		Button bt=(Button)findViewById(R.id.send);	
		bt.setOnClickListener(new View.OnClickListener() {
			
			@Override
			public void onClick(View arg0) {
				// TODO Auto-generated method stub
				String number=num.getText().toString();
				String content=cont.getText().toString();
				
				SmsManager sms=SmsManager.getDefault();
				ArrayList<String> message= sms.divideMessage(content);
				for(String s:message)
				{
					sms.sendTextMessage(number, null, s, null, null);
					TextView text=new TextView(relayout.getContext());
					
					text.setText(s);
					//relayout.setLayoutParams(params)
/*					RelativeLayout.LayoutParams params=new RelativeLayout.LayoutParams( 
							RelativeLayout.LayoutParams.WRAP_CONTENT,RelativeLayout.LayoutParams.WRAP_CONTENT 
							  ); 
					params.addRule(RelativeLayout.END_OF);*/
					//应采用线性布局
					LinearLayout.LayoutParams params=new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT,LinearLayout.LayoutParams.WRAP_CONTENT);
					
					text.setLayoutParams(params); 
					relayout.addView(text);
					
				}
				
				cont.setText("");
				
				Toast.makeText(getApplicationContext(), "发送成功", Toast.LENGTH_LONG).show();
			}
		});
	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.main, menu);
		return true;
	}

}

效果图:


  虽然简单,但是可以激发我的学习激情,呵呵

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值