创建复合组件

作者:追风剑情 发布于:2016-5-13 14:26 分类:Android

一、创建复合组件toggle_text.xml

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <merge xmlns:android="http://schemas.android.com/apk/res/android"
  3. android:layout_width="match_parent"
  4. android:layout_height="match_parent"
  5. android:orientation="horizontal" >
  6. <ToggleButton
  7. android:id="@+id/toggle_button"
  8. android:layout_width="wrap_content"
  9. android:layout_height="wrap_content"
  10. android:text="ToggleButton" />
  11. <EditText
  12. android:id="@+id/edit_text"
  13. android:layout_width="0dp"
  14. android:layout_height="wrap_content"
  15. android:layout_weight="1">
  16. <requestFocus />
  17. </EditText>
  18.  
  19. </merge>

 

二、创建复合组件类

  1. package com.test.androidtest;
  2.  
  3. import android.content.Context;
  4. import android.util.AttributeSet;
  5. import android.view.LayoutInflater;
  6. import android.view.View;
  7. import android.widget.CompoundButton;
  8. import android.widget.CompoundButton.OnCheckedChangeListener;
  9. import android.widget.EditText;
  10. import android.widget.LinearLayout;
  11. import android.widget.ToggleButton;
  12.  
  13. public class ToggleText extends LinearLayout implements OnCheckedChangeListener{
  14.  
  15. EditText mTextView;
  16. public ToggleText(Context context, AttributeSet attrs) {
  17. super(context, attrs);
  18. //使用LayoutInflater系统服务来扩展刚刚创建的布局。
  19. LayoutInflater inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
  20. //注意:为了扩展布局,将其作为父ViewGroup传进。
  21. View view = inflater.inflate(R.layout.toggle_text, this);
  22. mTextView = (EditText)view.findViewById(R.id.edit_text);
  23. ToggleButton toggle = (ToggleButton)view.findViewById(R.id.toggle_button);
  24. toggle.setChecked(true);
  25. toggle.setOnCheckedChangeListener(this);
  26. }
  27.  
  28. @Override
  29. public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
  30. //切换按钮会改变mTextView的启用状态。
  31. mTextView.setEnabled(isChecked);
  32. }
  33. }

 

三、创建活动

XML

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3. android:layout_width="match_parent"
  4. android:layout_height="match_parent"
  5. android:orientation="vertical" >
  6. <com.test.androidtest.ToggleText
  7. android:id="@+id/toggleText"
  8. android:layout_width="wrap_content"
  9. android:layout_height="wrap_content" />
  10. </LinearLayout>

 

代码

  1. package com.test.androidtest;
  2.  
  3. import android.app.Activity;
  4. import android.os.Bundle;
  5.  
  6. public class ToggleTextActivity extends Activity {
  7.  
  8. @Override
  9. protected void onCreate(Bundle savedInstanceState) {
  10. super.onCreate(savedInstanceState);
  11. setContentView(R.layout.activity_toggle_text);
  12. }
  13. }

 

运行测试

1111.png

22222.png

 

 

标签: Android

Powered by emlog  蜀ICP备18021003号-1   sitemap

川公网安备 51019002001593号