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;
}
}
效果图:
虽然简单,但是可以激发我的学习激情,呵呵