android自訂動態控制項

來源:互聯網
上載者:User

定義動態控制項,支援點擊最後一個按鈕添加一行控制項,否則刪除當前選中的該行控制項。

/**<br /> *<br /> */<br />package org.xiangjie.view.blacklist;<br />import java.util.ArrayList;<br />import java.util.List;<br />import org.xiangjie.R;<br />import android.content.Context;<br />import android.util.AttributeSet;<br />import android.view.Gravity;<br />import android.view.LayoutInflater;<br />import android.view.View;<br />import android.widget.EditText;<br />import android.widget.ImageButton;<br />import android.widget.LinearLayout;<br />import android.widget.TableLayout;<br />import android.widget.TableRow;<br />import android.widget.TextView;<br />/**<br /> * @author jie.xiang<br /> *<br /> */<br />public class DynamicControl extends LinearLayout {<br />private LayoutInflater mInflater;<br />private TableLayout layout;<br />private int tableRowID;<br />private int dynamicBtnID;<br />private int dynamicPreID;<br />private int dynamicAftID;<br />private List<View> idList = new ArrayList<View>();<br />/**<br /> * @param context<br /> */<br />public DynamicControl(Context context) {<br />this(context, null);<br />}<br />/**<br /> * @param context<br /> * @param attrs<br /> */<br />public DynamicControl(Context context, AttributeSet attrs) {<br />super(context, attrs);<br />this.mInflater = LayoutInflater.from(context);<br />layout = (TableLayout) mInflater.inflate(R.layout.dynamicvalues, null);<br />// 設定預設值<br />View view = layout.findViewById(R.id.dynamic_btn_1);<br />view.setOnClickListener(getClickListener());<br />idList.add(view);<br />tableRowID = R.id.dynamic_row_1;<br />dynamicBtnID = R.id.dynamic_btn_1;<br />dynamicPreID = R.id.dynamic_pre_1;<br />dynamicAftID = R.id.dynamic_aft_1;<br />addView(layout);<br />}<br />private OnClickListener getClickListener() {<br />return new OnClickListener() {<br />@Override<br />public void onClick(View v) {<br />clickLogic(v);<br />}<br />};<br />}<br />private void clickLogic(View v) {<br />if (!idList.isEmpty()) {<br />if (v == idList.get(idList.size() - 1)) {<br />addControls(v);<br />} else {<br />removeControls(v);<br />}<br />}<br />}<br />private TableRow getNewRow() {<br />TableRow row = getDefaultTableRow();<br />row.addView(getDefaultImageButton());<br />row.addView(getDefaultPrevEditText());<br />row.addView(getDefaultTextView());<br />row.addView(getDefaultAfterEditText());<br />return row;<br />}<br />private void addControls(View v) {<br />layout.addView(getNewRow());<br />((ImageButton) v).setImageResource(R.drawable.add_btn);<br />}<br />/**<br /> * 建立日期為:下午11:02:39<br /><br /> *<br /> * 移除選中的控制項<br /> *<br /> * @param v<br /> * @author jie.xiang<br /> */<br />private void removeControls(View v) {<br />if (idList.size() <= 1) {<br />return;<br />}<br />TableRow parent = (TableRow) v.getParent();<br />((TableLayout) parent.getParent()).removeView(parent);<br />idList.remove(v);<br />}<br />private TableRow getDefaultTableRow() {<br />tableRowID++;<br />TableRow row = new TableRow(getContext());<br />android.widget.TableRow.LayoutParams params = new android.widget.TableRow.LayoutParams();<br />params.width = android.widget.TableRow.LayoutParams.WRAP_CONTENT;<br />params.height = android.widget.TableRow.LayoutParams.WRAP_CONTENT;<br />row.setLayoutParams(params);<br />row.setGravity(Gravity.CENTER);<br />row.setId(tableRowID);<br />return row;<br />}<br />private EditText getDefaultEditText() {<br />EditText text = new EditText(getContext());<br />android.widget.TableRow.LayoutParams params = new android.widget.TableRow.LayoutParams();<br />params.width = android.widget.TableRow.LayoutParams.WRAP_CONTENT;<br />params.height = android.widget.TableRow.LayoutParams.WRAP_CONTENT;<br />text.setLayoutParams(params);<br />// text.set<br />text.setMaxLines(1);<br />text.setWidth(80);<br />return text;<br />}<br />private EditText getDefaultPrevEditText() {<br />dynamicPreID++;<br />EditText text = getDefaultEditText();<br />text.setId(dynamicPreID);<br />return text;<br />}<br />private EditText getDefaultAfterEditText() {<br />dynamicAftID++;<br />EditText text = getDefaultEditText();<br />text.setId(dynamicAftID);<br />return text;<br />}<br />private TextView getDefaultTextView() {<br />TextView view = new TextView(getContext());<br />android.widget.TableRow.LayoutParams params = new android.widget.TableRow.LayoutParams();<br />params.width = android.widget.TableRow.LayoutParams.WRAP_CONTENT;<br />params.height = android.widget.TableRow.LayoutParams.WRAP_CONTENT;<br />view.setLayoutParams(params);<br />view.setText("-");<br />return view;<br />}<br />private ImageButton getDefaultImageButton() {<br />dynamicBtnID++;<br />ImageButton btn = new ImageButton(getContext());<br />btn.setAdjustViewBounds(true);<br />android.widget.TableRow.LayoutParams params = new android.widget.TableRow.LayoutParams();<br />params.width = android.widget.TableRow.LayoutParams.WRAP_CONTENT;<br />params.height = android.widget.TableRow.LayoutParams.WRAP_CONTENT;<br />btn.setLayoutParams(params);<br />btn.setImageResource(R.drawable.add_btn);<br />btn.setBackgroundResource(R.drawable.add_btn);<br />btn.setId(dynamicBtnID);<br />btn.setOnClickListener(getClickListener());<br />idList.add(btn);<br />return btn;<br />}<br />}<br />

 

dynamicvalues.xml

<?xml version="1.0" encoding="utf-8"?><br /><TableLayout android:id="@+id/dynamic_parent"<br />android:layout_width="fill_parent" android:layout_height="fill_parent"<br />xmlns:android="http://schemas.android.com/apk/res/android"><br /><TableRow android:id="@+id/dynamic_row_1"<br />android:layout_width="wrap_content" android:layout_height="wrap_content"<br />android:gravity="center"><br /><ImageButton android:src="@drawable/add_btn"<br />android:adjustViewBounds="true" android:layout_height="wrap_content"<br />android:id="@+id/dynamic_btn_1" android:layout_width="wrap_content"></ImageButton><br /><EditText android:text="" android:id="@+id/dynamic_pre_1"<br />android:width="80px" android:layout_width="wrap_content"<br />android:maxLines="1" android:layout_height="wrap_content"<br />android:numeric="integer"></EditText><br /><TextView android:text="-" android:layout_width="wrap_content"<br />android:layout_height="wrap_content"></TextView><br /><EditText android:text="" android:id="@+id/dynamic_aft_1"<br />android:width="80px" android:maxLines="1" android:layout_width="wrap_content"<br />android:layout_height="wrap_content" android:numeric="integer"></EditText><br /></TableRow><br /></TableLayout><br />

 

介面效果如下:

 

 

 

唉,上班實在太忙,沒有太多時間,這個介面太粗糙,同時ImageButton還有待調整,這個會後續跟進,剛接觸不久,還是對API不太熟悉,呵呵

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.