Android自定义组合控件--EditText和Button组合成带有清空EditText内容功能的复合控件
生活随笔
收集整理的這篇文章主要介紹了
Android自定义组合控件--EditText和Button组合成带有清空EditText内容功能的复合控件
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
目標:實現EditText和Button組合成帶有清空EditText內容功能的復合控件,可以通過代碼設置自定義控件的相關屬性。?
實現效果為:
(1)在res/layout目錄下編寫自定義組合控件的布局文件:clear_edittext.xml
代碼如下:
<?xmlversion="1.0"encoding="utf-8"?> <LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="horizontal"><EditText android:id="@+id/editText"android:layout_width="0dp"android:layout_height="wrap_content"android:layout_weight="1"/><Button android:id="@+id/button"android:layout_width="wrap_content"android:layout_height="wrap_content"/></LinearLayout>
(2)編寫自定義組合控件相應的類:ClearEditText.java
代碼如下:
package com.demo.compoundwidgetdemo;import android.content.Context; import android.util.AttributeSet; import android.view.LayoutInflater; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.LinearLayout; import android.widget.TextView;public class ClearEditText extends LinearLayout {private EditText editText;private Button button;public ClearEditText(Context context) {this(context, null);}public ClearEditText(Context context, AttributeSet attrs) {super(context, attrs);// TODO Auto-generated constructor stub//在構造函數中將布局文件clear_textview.xml中定義的布局解析出來。 LayoutInflater.from(context).inflate(R.layout.clear_edittext, this,true);//得到相應控件editText=(EditText)findViewById(R.id.editText);button=(Button)findViewById(R.id.button);//給button注冊相應的事件button.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stub//將EditText內容清空editText.setText("");}});}//設置子控件相關屬性的方法public void setEditTextHint(int resid){this.editText.setHint(resid);}public void setEditTextHint(String hint){this.editText.setHint(hint);}public void setButtonText(int resid){this.button.setText(resid);}public void setButtonText(String text){this.button.setText(text);}}
(3)這樣就可以像使用普通的控件一樣,在自己的程序中使用該自定義組合控件,在activity_main.xml中使用該控件
<LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="wrap_content"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="com.demo.compoundwidgetdemo.MainActivity"><!-- 使用自定義組合控件 --><com.demo.compoundwidgetdemo.ClearEditTextandroid:id="@+id/clear_et"android:layout_width="match_parent"android:layout_height="wrap_content"></com.demo.compoundwidgetdemo.ClearEditText></LinearLayout>
(4)在MainActivity.java中操作該組合控件
代碼如下:
package com.demo.compoundwidgetdemo;import android.support.v7.app.ActionBarActivity; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem;public class MainActivity extends ActionBarActivity {private ClearEditText clearEditText;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);clearEditText=(ClearEditText)findViewById(R.id.clear_et);clearEditText.setEditTextHint("帶有清空功能的EditText");clearEditText.setButtonText("清空內容");}@Overridepublic 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;}@Overridepublic boolean onOptionsItemSelected(MenuItem item) {// Handle action bar item clicks here. The action bar will// automatically handle clicks on the Home/Up button, so long// as you specify a parent activity in AndroidManifest.xml.int id = item.getItemId();if (id == R.id.action_settings) {return true;}return super.onOptionsItemSelected(item);} }
(5)運行該程序,效果如開始所示。
最后,你可以通過類似的方法將不同控件組合成你需要的控件,這樣就可以像使用普通控件一樣使用組合控件
總結
以上是生活随笔為你收集整理的Android自定义组合控件--EditText和Button组合成带有清空EditText内容功能的复合控件的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 利用JDBC连接Oracle数据库
- 下一篇: ImageView---属性androi