日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android复合控件创建与使用Demo

發布時間:2024/4/15 Android 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android复合控件创建与使用Demo 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1>創建復合控件
1.1>屬性值類型聲明 <?xml version="1.0" encoding="utf-8"?> <resources><declare-styleable name="MyCompoundView"><attr name="et_hint" format="reference|string"></attr><attr name="bt_text" format="reference|string"></attr></declare-styleable></resources>
1.2>復合控件布局 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="horizontal"><EditTextandroid:id="@+id/newItem_et"android:layout_width="0dp"android:layout_height="wrap_content"android:layout_weight="1"/><Buttonandroid:id="@+id/done_bt"android:layout_width="wrap_content"android:layout_height="wrap_content" /></LinearLayout>
效果為:
1.3>復合控件代碼 package com.demo.cxc.compoundview;import android.content.Context; import android.content.res.TypedArray; import android.util.AttributeSet; import android.view.LayoutInflater; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.LinearLayout;/*** Created by CXC on 15/4/12.*/ public class MyCompoundView extends LinearLayout {private EditText newItem_et;private Button done_bt;OnButtonClickListener buttonClickListener;public MyCompoundView(Context context) {super(context);init(null,0);}public MyCompoundView(Context context, AttributeSet attrs) {/*---注意調用的父類構造函數形式,如果使用super(context);在Activity中通過findFragmentById()or findFragmentByTag()時返回Null,進而使用該Fragment時會出現NullPointerException*/super(context,attrs);init(attrs,0);}private void init(AttributeSet attrs, int defStyles) {//使用布局資源填充視圖LayoutInflater layoutInflater = (LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);View view = layoutInflater.inflate(R.layout.compound_view_layout, this, true);//獲得對子控件的引用newItem_et = (EditText) view.findViewById(R.id.newItem_et);done_bt = (Button) view.findViewById(R.id.done_bt);//獲取設置的各個屬性final TypedArray a = getContext().obtainStyledAttributes(attrs, R.styleable.MyCompoundView, defStyles, 0);String newItem_et_hint = a.getString(R.styleable.MyCompoundView_et_hint);String done_bt_text = a.getString(R.styleable.MyCompoundView_bt_text);//設置屬性值newItem_et.setHint(newItem_et_hint);done_bt.setText(done_bt_text);done_bt.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {if(buttonClickListener==null){return ;}//調用listenerbuttonClickListener.onButtonClick(newItem_et.getText().toString());newItem_et.setText("");}});}public void setOnButtonClickListener(OnButtonClickListener listener) {this.buttonClickListener = listener;}public interface OnButtonClickListener {public void onButtonClick(String newItemString);}}
2>使用該復合控件 2.1>布局 效果如下:
<LinearLayout 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:orientation="vertical"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"><!--使用該組合控件--><!--xmlns:cv="http://schemas.android.com/apk/res/AndroidManifest文件中的package屬性值"--><com.demo.cxc.compoundview.MyCompoundView xmlns:android="http://schemas.android.com/apk/res/android"xmlns:cv="http://schemas.android.com/apk/res/com.demo.cxc.compoundview"android:id="@+id/new_item"android:layout_width="match_parent"android:layout_height="wrap_content"cv:bt_text="@string/done_bt_text"cv:et_hint="@string/new_item_et_hint"/><TextViewandroid:id="@+id/show_tv"android:text="Show Text..."android:layout_width="match_parent"android:layout_height="wrap_content" /></LinearLayout>


其中Strings.xml如下:
<resources><string name="app_name">CompoundView</string><string name="action_settings">Settings</string><string name="done_bt_text">Done</string><string name="new_item_et_hint">Please input what you want to do ...</string> </resources>
2.2>MainActivity代碼 package com.demo.cxc.compoundview;import android.support.v7.app.ActionBarActivity; import android.os.Bundle; import android.util.Log; import android.view.Menu; import android.view.MenuItem; import android.widget.EditText; import android.widget.TextView;/*實現 MyCompoundView.OnButtonClickListener接口,以便實現相關操作*/ public class MainActivity extends ActionBarActivity implements MyCompoundView.OnButtonClickListener {private MyCompoundView new_item_cv;private TextView show_tv;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);initViews();}private void initViews() {new_item_cv = (MyCompoundView) findViewById(R.id.new_item);if (new_item_cv == null) {Log.i("CXC", "***********Null---------");} else {new_item_cv.setOnButtonClickListener(this);}show_tv=(TextView)findViewById(R.id.show_tv);}@Overrideprotected void onResume() {super.onResume();}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {// Inflate the menu; this adds items to the action bar if it is present.getMenuInflater().inflate(R.menu.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();//noinspection SimplifiableIfStatementif (id == R.id.action_settings) {return true;}return super.onOptionsItemSelected(item);}@Overridepublic void onButtonClick(String newItemString) {//在這里進行顯示操作show_tv.setText(newItemString);} }

3>運行效果如下:



總結

以上是生活随笔為你收集整理的Android复合控件创建与使用Demo的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。