【转】Android控件动态使用
作者:小水沉伦 | 来源:互联网 | 2023-05-19 04:22
作为示例还可以,但没有很好使用MVC,晚点会整理新的版本核心提示:android控件动态使用通常android里的界面布局都是在XML里设定好的也就是说在程
//作为示例还可以,但没有很好使用MVC,晚点会整理新的版本
核心提示:android控件动态使用 通常android里的界面布局都是在XML里设定好的 也就是说 在程序中,不能更改界面上的元素数量等, 比如上图所示的一个 聊天会话界面 当有人发言就要增加一个TextView, 这就是动态增加控件, 这就不能在XML里事先布局了! 不过还好,ANDR
android控件动态使用
);
setSendFile2( layout, this, getCurrColor(),"我的照片.jpg");
for( int i=0; i<10; i++ )
{
setSendMsg( layout, this, getCurrColor(), i+"聊天内容在这里。。" );
}
sv.addView( layout );
setContentView(sv);
}
private int getCurrColor()
{
return bg[ (++bgIndex)% bg.length ];
}
private void setSendMsg(LinearLayout layout, Context context, int bgColur, String MSG)
{
TextView tv = new TextView(context);
tv.setText( "某人 说: ["+DateFormat.format( "kk:mm" , Calendar.getInstance())+"]\n"+MSG );
tv.setBackgroundColor( bgColur );
layout.addView( tv );
}
private void setSendFile(LinearLayout layout, Context context, int bgColur, String fileName)
{
setSendMsg( layout, context, bgColur, "正在发送"+fileName );
LinearLayout myLayout = new LinearLayout(context);
myLayout.setBackgroundColor( bgColur );
ProgressBar pb = new ProgressBar(context);
pb.setLayoutParams( LP_WW );
myLayout.addView( pb );
Button bt = new Button(context);
bt.setLayoutParams( LP_WW );
bt.setText( "取消" );
myLayout.addView( bt );
layout.addView( myLayout );
}
private void setSendFile2(LinearLayout layout, Context context, int bgColur, String fileName)
{
setSendMsg( layout, context, bgColur, "正在发送"+fileName );
LinearLayout myLayout = new LinearLayout(context);
myLayout.setBackgroundColor( bgColur );
myLayout.setOrientation( LinearLayout.VERTICAL );
pb = new ProgressBar(context,null,android.R.attr.progressBarStyleHorizontal);
pb.setLayoutParams( LP_FW );
pb.setProgress( 45 );
pb.setSecondaryProgress( 0 );
myLayout.addView( pb );
Button bt = new Button(context);
bt.setLayoutParams( LP_WW );
bt.setText( "取消" );
myLayout.addView( bt );
layout.addView( myLayout );
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event)
{
Log.d("onKeyDown:", " keyCode=" + keyCode + " KeyEvent=" + event);
switch (keyCode)
{
case KeyEvent.KEYCODE_DPAD_UP:
break;
case KeyEvent.KEYCODE_DPAD_DOWN:
break;
case KeyEvent.KEYCODE_DPAD_LEFT:
pb.setProgress( pb.getProgress()-5 );
break;
case KeyEvent.KEYCODE_DPAD_RIGHT:
pb.setProgress( pb.getProgress()+5 );
break;
case KeyEvent.KEYCODE_DPAD_CENTER:
break;
case KeyEvent.KEYCODE_0:
break;
}
return super.onKeyDown(keyCode, event);
}
}