MainActivity
private MyTextView mytextview; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mytextview = (MyTextView) findViewById(R.id.mytextview); mytextview.setMysetonimageclicklistener(this); } @Override public void setonimageclicklistener(View view) { startActivity(new Intent(this,TwoActivity.class)); }
Activity_Main佈局
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="60dp" tools:context="com.aqinga.lianxi2.MainActivity"> <com.aqinga.lianxi2.MyTextView android:id="@+id/mytextview" android:layout_width="match_parent" android:layout_height="match_parent" app:text_title="MainActivity" app:text_size="16dp" app:text_color="@color/colorAccent" app:src_color="@color/colorPrimary"></com.aqinga.lianxi2.MyTextView> </RelativeLayout>
MyTextView
public class MyTextView extends LinearLayout { private TextView text; private ImageView image; private int srccolor; private float size; private int color; private String title; private TypedArray typedArray; private RelativeLayout content; public MyTextView(Context context) { super(context); init(context,null); } public MyTextView(Context context, @Nullable AttributeSet attrs) { super(context, attrs); init(context,attrs); } public void init(Context context,AttributeSet attrs){ View inflate = inflate(context, R.layout.mytextview, this); content = (RelativeLayout) inflate.findViewById(R.id.recontent); image = (ImageView) findViewById(R.id.image_view); text = (TextView) findViewById(R.id.text_view); image.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { if (mysetonimageclicklistener!=null){ mysetonimageclicklistener.setonimageclicklistener(v); } } }); if(attrs==null){ return; } init1(context,attrs); selected(); } public void init1(Context context,AttributeSet attrs){ if (attrs==null){ return; } typedArray = context.obtainStyledAttributes(attrs, R.styleable.MyTextView); title = typedArray.getString(R.styleable.MyTextView_text_title); color = typedArray.getColor(R.styleable.MyTextView_text_color, Color.GRAY); size = typedArray.getDimension(R.styleable.MyTextView_text_size, 16); srccolor = typedArray.getColor(R.styleable.MyTextView_src_color, Color.RED); } public void selected(){ content.setBackgroundColor(srccolor); text.setText(title); text.setTextColor(color); text.setTextSize(size); } public interface onimageclicklistener{ void setonimageclicklistener(View view); } private onimageclicklistener mysetonimageclicklistener; public void setMysetonimageclicklistener(onimageclicklistener mysetonimageclicklistener) { this.mysetonimageclicklistener = mysetonimageclicklistener; } }
mytextview佈局
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="60dp" android:id="@+id/recontent" android:background="#ff9999" > <ImageView android:id="@+id/image_view" android:layout_width="wrap_content" android:layout_height="match_parent" android:src="@mipmap/ic_launcher"/> <TextView android:id="@+id/text_view" android:text="text" android:gravity="center" android:layout_centerHorizontal="true" android:layout_width="wrap_content" android:layout_height="match_parent" /> </RelativeLayout>
TwoActivity
public class TwoActivity extends AppCompatActivity implements MyTextView.onimageclicklistener { private MyTextView mytextview; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.twoactivity); mytextview = (MyTextView) findViewById(R.id.mytextview); mytextview.setMysetonimageclicklistener(this); } @Override public void setonimageclicklistener(View view) { finish(); } }
twoactivity佈局
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:orientation="horizontal" android:layout_height="60dp" xmlns:app="http://schemas.android.com/apk/res-auto"> <com.aqinga.lianxi2.MyTextView android:id="@+id/mytextview" android:layout_width="match_parent" android:layout_height="60dp" app:text_title="TwoActivity" app:text_size="16dp" app:text_color="@color/colorPrimary" app:src_color="@color/colorAccent"></com.aqinga.lianxi2.MyTextView> </RelativeLayout>
attrs佈局
<?xml version="1.0" encoding="utf-8"?> <resources> <declare-styleable name="MyTextView"> <attr name="text_title" format="string"></attr> <attr name="text_size" format="dimension"></attr> <attr name="text_color" format="color"></attr> <attr name="src_color" format="reference"></attr> </declare-styleable> </resources>