嵌套view之间的事件传递机制
来源:互联网 发布:淘宝3333 编辑:程序博客网 时间:2024/05/19 16:47
通过实例说明:
1:父view启动子view
public class MainActivity extends Activity {private Button StartViewBut;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);StartViewBut = (Button) findViewById(R.id.button);StartViewBut.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {new SubView(MainActivity.this).show();//启动一个子view}});}}父view对应的xml:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <Button android:id="@+id/button" android:layout_width="fill_parent" android:layout_height="50dp" android:text="******start sub view******" android:gravity="center"/></LinearLayout>2:子view处理点击事件
public class SubView extends LinearLayout implements OnClickListener {private Context mContext;private Button OkBtn, CancelBtn;private TextView text;public SubView(Context context) {super(context);mContext = context;/*((Activity) mContext).addContentView(this, new LayoutParams(-1,-1));LayoutInflater.from(mContext).inflate(R.layout.layout_sub, this);*/View subView = LayoutInflater.from(mContext).inflate(R.layout.layout_sub, this);((Activity) mContext).addContentView(subView, new LayoutParams(-1,-1));text = (TextView) findViewById(R.id.display);OkBtn = (Button) this.findViewById(R.id.button_ok);CancelBtn = (Button) this.findViewById(R.id.button_cancel);this.setOnClickListener(this);OkBtn.setOnClickListener(this);CancelBtn.setOnClickListener(this);this.setVisibility(View.GONE);}public void show(){this.setVisibility(View.VISIBLE);}public void cancel(){this.setVisibility(View.GONE);}@Overridepublic void onClick(View v) {switch (v.getId()) {case R.id.button_ok:text.setText("success!");break;case R.id.button_cancel:text.setText("fail!");break;default:this.setVisibility(View.GONE);break;}}}说明:
a:实现子view的页面布局加载在父view页面布局之上的两种方法
((Activity) mContext).addContentView(this, new LayoutParams(-1,-1));LayoutInflater.from(mContext).inflate(R.layout.layout_sub, this);View subView = LayoutInflater.from(mContext).inflate(R.layout.layout_sub, this);((Activity) mContext).addContentView(subView, new LayoutParams(-1,-1));b:实现点击子View的时候父view有无响应
this.setOnClickListener(this);//无响应this.setOnClickListener(this);//有响应c:控制子view显示时机
public void show(){this.setVisibility(View.VISIBLE);}public void cancel(){this.setVisibility(View.GONE);}d:点击子view,是否可以回到父控件
default:this.setVisibility(View.GONE);break;//回到父viewdefault:break;//不回到父view
子view对应的xml:<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="#B4000000" android:orientation="vertical" > <TextView android:id="@+id/text" android:layout_width="fill_parent" android:layout_height="50dp" android:layout_marginTop="100dp" android:textColor="#ff0000" android:gravity="center" android:text="*******success or fail ?******" /> <TextView android:id="@+id/display" android:layout_width="fill_parent" android:layout_height="50dp" android:layout_marginTop="50dp" android:textColor="#ff0000" android:gravity="center" android:text="*******display data******" /> <Button android:id="@+id/button_ok" android:layout_width="fill_parent" android:layout_height="50dp" android:layout_marginTop="50dp" android:text="OK" /> <Button android:id="@+id/button_cancel" android:layout_width="fill_parent" android:layout_height="50dp" android:layout_marginTop="50dp" android:text="CANCEL" /></LinearLayout>
0 0
- 嵌套view之间的事件传递机制
- View的事件传递机制
- View的事件传递机制
- View的事件传递机制
- view的事件传递机制
- View的事件传递机制
- View的事件传递机制
- Android事件传递机制详解(嵌套自定义View示例)
- View事件传递机制
- View 事件传递机制
- View事件传递机制
- 深入理解 View 的事件传递机制
- View的事件传递机制总结
- Android View事件分发机制--点击事件的传递规则
- Android View 事件传递机制
- Android View事件传递机制
- Android-view事件传递机制
- 【Android View】 事件传递机制
- poj 3258
- jsrender在for循环中获取上级数据
- 三天培训之异常
- vmware虚拟机中装linux系统
- OJ_1051
- 嵌套view之间的事件传递机制
- Linux文件夹大小查看办法
- 进程管理(2014.02.19)
- 查询oracle版本号的sql
- 优先队列uva11997(好)
- 树形DP(4) Poj1947 Rebuilding Roads
- JavaScript中事件精解
- Sybase索引
- iOS安全攻防(十八):数据保护API