android 사용자 정의 컨트롤 과 사용자 정의 속성

5911 단어
사용자 정의 컨트롤 세 가지 방법
1. 컨트롤 조합, 컨트롤 에 대한 하위 view 는 이미 알 고 있 고 고정된 상황 입 니 다. 예 를 들 어 아래 와 같 습 니 다.설명 할 xml 가 필요 합 니 다.
2. 이미 있 는 컨트롤 을 계승 합 니 다. 예 를 들 어 페이지 별 listview
3. 컨트롤 의 하위 View 가 확실 하지 않 습 니 다. 사용 할 때 xml 설정, 예 를 들 어 workspce celllayot 등 입 니 다.
 
          하위 뷰 내용 불 확정 

1. 이 사용자 정의 컨트롤 은 두 개의 TextView 와 하나의 Button 으로 구성 되 어 있 습 니 다. view_fixissue_button_toolbar_item.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/handle_item_residual"
    style="@miui:style/Widget.ListView.Item.DoubleLine"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal" >

    <RelativeLayout
        android:layout_width="0dip"
        android:layout_height="wrap_content"
        android:layout_gravity="center_vertical"
        android:layout_marginRight="15dip"
        android:layout_weight="1" >

        <TextView
            android:id="@+id/title"
            style="@miui:style/TextAppearance.List.Primary"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />

        <TextView
            android:id="@+id/summary"
            style="@miui:style/TextAppearance.List.Secondary"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="@id/title" />
    </RelativeLayout>

    <Button
        android:id="@+id/fix_button"
        style="@miui:style/Widget.Button.Positive"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_vertical" />
     <!-- android:background="@drawable/action_btn" -->
</LinearLayout>

2. ButtonToolbarItemView 에서 inflate 위의 레이아웃 파일, TypedArray 사용자 정의 속성 사용 방법 에 주의 하 십시오.
package com.miui.virtualsim.ui;

import android.content.Context;
import android.content.res.TypedArray;
import android.graphics.drawable.Drawable;
import android.util.AttributeSet;
import android.view.View;
import android.view.accessibility.AccessibilityEvent;
import android.widget.Button;
import android.widget.CompoundButton;
import android.widget.ImageView;
import android.widget.RelativeLayout;
import android.widget.TextView;
import android.widget.CompoundButton.OnCheckedChangeListener;
import miui.widget.SlidingButton;

import com.miui.virtualsim.R;
public class ButtonToolbarItemView extends RelativeLayout{

    private TextView mTitleView;
    private TextView mSummaryView;

    private Button mButton;
    private String mButtonText;
 
    private String mTitleText;
    private String msummaryText;


    public ButtonToolbarItemView(Context context) {
        this(context, null);
    }

    public ButtonToolbarItemView(Context context, AttributeSet attrs) {
        this(context, attrs, 0);
    }

    public ButtonToolbarItemView(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);

        TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.MainToolbarItemView);
        mTitleText = a.getString(R.styleable.MainToolbarItemView_item_name);
        msummaryText = a.getString(R.styleable.MainToolbarItemView_item_desc);
        mButtonText = a.getString(R.styleable.MainToolbarItemView_item_button);
        a.recycle();

        View.inflate(context, R.layout.view_fixissue_button_toolbar_item, this);
        mTitleView = (TextView) findViewById(R.id.title);
        mTitleView.setText(mTitleText);

        mSummaryView = (TextView) findViewById(R.id.summary);
        mSummaryView.setText(msummaryText);
        mButton = (Button) findViewById(R.id.fix_button);
        mButton.setText(mButtonText);
    }

    public void setTitleViewText (String str) {
        mTitleView.setText(str);
    }

    public void setSummaryText (String str) {
        mSummaryView.setText(str);
    }

    public void setFixButtonText(String str){
        mButton.setText(str);
    }

    public Button getFixButton(){
        return mButton;
    }
}

3. 사용자 정의 속성 attrs. xml 정의
<?xml version="1.0" encoding="utf-8"?>
<resources>

    <declare-styleable name="MainToolbarItemView">
        <attr name="item_name" format="string" />
        <attr name="item_desc" format="string" />
        <attr name="item_button" format="string" />
    </declare-styleable>

</resources>

4. 우리 가 정의 한 컨트롤 을 사용 합 시다
    <com.miui.virtualsim.ui.ButtonToolbarItemView
        android:id="@+id/main_toolbar_internet_by_wifi"
        android:layout_width="wrap_content"
        android:layout_height="56.67dip"
        android:clipChildren="false"
        miui:item_button="@string/bills_text"
        miui:item_desc="@string/bills_text"
        miui:item_name="@string/bills_text" />

자동 의미 속성 을 사 용 했 기 때문에 사용 할 때 네 임 스페이스 를 추가 합 니 다.
<?xml version="1.0" encoding="UTF-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:miui="http://schemas.android.com/apk/res/com.miui.virtualsim"
    android:layout_width="match_parent"

사실 사용자 정의 컨트롤 은 간단 합 니 다. 바로 onMeasure onLayout 입 니 다. onTouch 에 Listener 를 추가 합 니 다.

좋은 웹페이지 즐겨찾기