`
寻梦者
  • 浏览: 635559 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

android在布局文件中自定义参数并在初始化时获取

 
阅读更多

在一些自定义view中我们往需要预先定义一些默认属性,这些参数常常跟view绑定的,因而在定义view的布局文件中添加这些属性就显得尤为有价值。整个过程分三步:

 

 1.定义declare-styleable,用于TypedArray来绑定对于的参数,在此需要在value目录里面新建文件:attrs.xml

 

 

<resources>
    <declare-styleable name="Def">
        <!-- The first screen the workspace should display. -->
        <attr name="num" format="integer"  />
         <attr name="length" format="integer"  />
    </declare-styleable>
</resources>
 

   2.布局文件中配置控件,这里包含xml声明,还有对应的属性值

 

 

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:test="http://schemas.android.com/apk/res/com.yuhua.test"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="@string/hello" />
     <com.yuhua.test.LocalView 
         android:layout_width="fill_parent"
         android:layout_height="wrap_content"
         test:num ="3"
         test:length="5"
         />
</LinearLayout>
 

 

 3. 通过映射获取配置的属性

 

 

public class LocalView extends View {

	private static final String TAG = "LocalView";
	
	public LocalView(Context context) {
		super(context);
	}

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

	public LocalView(Context context, AttributeSet attrs) {
		super(context, attrs);
	    TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.Def);
	    Log.i(TAG, a.getInt(R.styleable.Def_length, 0) + "===" + a.getInt(R.styleable.Def_num, 0));
	}
}
 

 

 

 

分享到:
评论

相关推荐

    Android自定义toolbar布局

    然后在Activity中,你需要初始化`TabLayout`并设置其适配器: ```java TabLayout tabLayout = findViewById(R.id.tab_layout); tabLayout.addTab(tabLayout.newTab().setText("Tab 1")); tabLayout.addTab...

    Android自定义Layout布局

    在项目中使用自定义布局时,可以像使用系统布局一样在XML布局文件中声明它,并添加子视图。在Android Studio中,可以创建一个res/layout目录下的XML文件,声明自定义布局类,并在`&lt;layout&gt;`标签中设置属性。 ```xml...

    Android textview 自定义布局

    最后,在使用这个自定义TextView时,我们只需要在XML布局文件中引用`CustomTextView`,并设置其属性: ```xml android:layout_width="match_parent" android:layout_height="wrap_content" android:text="这里...

    android超出布局点击失效解决方案附带自定义控件

    为了更具体地解决问题,开发者通常会在`OutLayoutTestActivity.java`中初始化布局,设置点击监听器或者自定义ViewGroup的行为。通过调试和查看代码,我们可以进一步了解如何实现点击事件的修复。 总的来说,处理...

    Android 自定义圆环动画切换、流式布局的实现.rar

    4. MainActivity.java:主活动,初始化和管理上面提到的自定义组件和布局。 5. 相关的XML布局文件:如activity_main.xml,定义了界面的结构和组件。 总的来说,这个项目展示了Android开发中自定义组件、动画以及...

    android 自定义view流式布局

    2. 初始化:在构造函数中,设置必要的属性,如背景颜色、边距等,并调用`super()`传递参数。 3. 重写测量方法:我们需要覆盖`onMeasure()`方法来计算自定义布局的大小。在此方法中,遍历所有子视图,根据它们的测量...

    Android自定义输入法软键盘

    `onCreateInputView()`是初始化键盘布局的地方,我们可以在这里设置自定义的布局文件,包含各种按键。 ```java @Override public View onCreateInputView() { View keyboardView = getLayoutInflater().inflate(R....

    Android自定义控件实现导航条IndicatorView

    - 在`AndroidDemo`项目中,可以找到实际的代码实现,包括布局文件、自定义控件类以及相关的数据绑定和事件处理代码。 - 分析代码结构,理解各个部分的作用,动手实践以加深理解。 8. **总结与拓展** - 自定义...

    Android中自定义控件View

    - 在这个类中,我们需要重写构造函数,以便在需要时初始化控件。通常,我们会有一个无参构造函数用于XML布局解析,以及一个带参数的构造函数用于代码动态创建。 2. **绘制视图** - 自定义View的核心在于重写`...

    android自定义垂直seekbar

    在这个自定义的VerticalSeekBar中,我们重写了构造函数,并调用了`init()`方法初始化控件。关键在于`setOrientation(VERTICAL)`,这使得SeekBar变为垂直布局。同时,我们还需要重写`onMeasure()`方法,以正确调整...

    026_android UI组件之 AlertDialog的自定义布局

    可以通过`findViewById()`找到这些控件并进行初始化。 4. 处理按钮点击事件:可以将点击事件的处理代码放入`OnClickListener`中,或者使用`setPositiveButton()`和`setNegativeButton()`方法,但要记得在自定义布局...

    Android 自定义TimePicker组件

    在项目中使用这个自定义组件时,只需在XML布局文件中声明并引用自定义属性: ```xml android:id="@+id/custom_time_picker" android:layout_width="match_parent" android:layout_height="wrap_content" app:...

    android实现自定义tab页

    // 在初始化时,可能只显示第一个Tab的内容 FrameLayout contentContainer = findViewById(R.id.content_container); contentContainer.removeAllViews(); contentContainer.addView(tab1Content); // 在...

    Android自定义弹出框实现(修改版)完整实例源码

    这些参数会在初始化Dialog时用到。 3. **设置视图**:通过`setContentView()`方法将自定义布局加载到Dialog中。这一步将XML布局文件转换为实际的视图对象。 4. **事件处理**:为弹出框上的按钮或其他可交互元素...

    自定义Android Dialog EditText 密码输入框

    // 在布局中找到EditText和其他元素并初始化 EditText editText = view.findViewById(R.id.et_password); // 自定义显示的图标 ImageView iconView = view.findViewById(R.id.iv_icon); // 设置EditText的...

    Android自定义控件的demo

    - **重写构造方法**:添加必要的构造方法,以便在XML布局中引用自定义控件时初始化。 - **绘制子视图**:在自定义控件的`onLayout()`方法中,设置子视图的位置;在`onDraw()`方法中,绘制自定义的外观。 - **事件...

    Android 百度定位 多个自定义绘制View

    【Android 百度定位 多个自定义绘制View】是一个Android开发相关的项目,主要展示了如何在应用程序中集成百度地图API进行定位,并结合自定义View进行界面的个性化展示。在这个项目中,开发者可以学习到以下几个关键...

    android自定义布局中的平滑移动

    同时,至少需要一个构造函数,特别是带有`Context`和`AttributeSet`参数的构造函数,以便于在XML布局文件中使用自定义布局。 为了精确控制自定义布局及其子视图的尺寸,还需重写`onMeasure()`方法。这个方法用于...

    Android高手进阶之自定义View,自定义属性(带进度的圆形进度条)源码

    在Android中,我们可以为自定义View定义自己的XML属性,使得在布局文件中更容易配置和使用。这需要以下几个步骤: 1. 在res/values/attrs.xml文件中定义自定义属性,如`progressColor`(进度颜色)、`...

Global site tag (gtag.js) - Google Analytics