首页 > 代码库 > 1. 自定义视图属性
1. 自定义视图属性
res/values/attrs.xml 自定义属性值
1 <?xml version="1.0" encoding="utf-8"?>2 <resources>3 <!-- 颜色属性值 -->4 <declare-styleable name="MyView">5 <attr name="rect_color" format="color"/>6 </declare-styleable>7 </resources>
自定义控件 ---- 长方形
1 import android.content.Context; 2 import android.content.res.TypedArray; 3 import android.util.AttributeSet; 4 import android.view.View; 5 6 public class MyRect extends View { 7 8 /** 资源解析程序来使用的 */ 9 public MyRect(Context context, AttributeSet attrs) {10 super(context, attrs);11 12 // 设置颜色属性值13 TypedArray ta = context.obtainStyledAttributes(attrs, R.styleable.MyView);14 // 得到颜色值,指定一个默认值,红色。15 int color = ta.getColor(R.styleable.MyView_rect_color, 0xffff0000);16 // 设置颜色。17 setBackgroundColor(color);18 19 ta.recycle(); // 循环20 }21 22 public MyRect(Context context) {23 super(context);24 }25 26 }
XML布局文件加载,自定义控件显示:
1)加上,自定义命名空间,其中 com.jikexueyuan.myrect 是包名。
xmlns:jkxy="http://schemas.android.com/apk/res/com.jikexueyuan.myrect"
2)jkxy:rect_color="#ff00ff00" 才可正常使用。
1 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 2 xmlns:jkxy="http://schemas.android.com/apk/res/com.jikexueyuan.myrect" 3 xmlns:tools="http://schemas.android.com/tools" 4 android:layout_width="match_parent" 5 android:layout_height="match_parent" 6 android:orientation="vertical" 7 tools:context="com.jikexueyuan.myrect.MainActivity$PlaceholderFragment" > 8 9 <com.jikexueyuan.myrect.MyRect10 android:layout_width="100dp"11 android:layout_height="100dp"12 jkxy:rect_color="#ff00ff00" />13 14 </LinearLayout>15 16 <!-- 17 1)加上,自定义命名空间,其中 com.jikexueyuan.myrect 是包名。18 xmlns:jkxy="http://schemas.android.com/apk/res/com.jikexueyuan.myrect"19 2)jkxy:rect_color="#ff00ff00" 才可正常使用。 20 -->
1 import android.app.Activity; 2 import android.app.Fragment; 3 import android.os.Bundle; 4 import android.view.LayoutInflater; 5 import android.view.MenuItem; 6 import android.view.View; 7 import android.view.ViewGroup; 8 9 public class MainActivity extends Activity {10 11 @Override12 protected void onCreate(Bundle savedInstanceState) {13 super.onCreate(savedInstanceState);14 setContentView(R.layout.activity_main);15 16 if (savedInstanceState == null) {17 getFragmentManager().beginTransaction()18 .add(R.id.container, new PlaceholderFragment())19 .commit();20 }21 }22 23 @Override24 public boolean onOptionsItemSelected(MenuItem item) {25 int id = item.getItemId();26 if (id == R.id.action_settings) {27 return true;28 }29 return super.onOptionsItemSelected(item);30 }31 32 /**33 * A placeholder fragment containing a simple view.34 */35 public static class PlaceholderFragment extends Fragment {36 37 public PlaceholderFragment() {38 }39 40 @Override41 public View onCreateView(LayoutInflater inflater, ViewGroup container,42 Bundle savedInstanceState) {43 View rootView = inflater.inflate(R.layout.fragment_main, container, false);44 return rootView;45 }46 }47 48 }
1 <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"2 xmlns:tools="http://schemas.android.com/tools"3 android:id="@+id/container"4 android:layout_width="match_parent"5 android:layout_height="match_parent"6 tools:context="com.jikexueyuan.myrect.MainActivity"7 tools:ignore="MergeRootFrame" />
1. 自定义视图属性
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。