gpt4 book ai didi

android - 自定义组件或常规组合

转载 作者:行者123 更新时间:2023-12-04 05:46:42 24 4
gpt4 key购买 nike

我要创建一个可重用的界面,即年份选择器(仅年份)。本质上,这个组件应该有几个按钮和一个 TextView ,滑动功能也很棒。

正如我所说,我努力使其可重用,但我不确定 Android 是否提供任何方法来实现它。我已经开始阅读“自定义组件”文章 - 这是我真正需要的吗?或者我应该做一个像普通的组合类一样的东西,它有对 View 对象的引用等?

谢谢。

更新:这很简单 - 这是一个如果有人遇到相同情况的例子

YearPicker.class

public class YearPicker extends LinearLayout {
protected int _minValue = 1980;
protected int _currentValue;
protected int _maxValue;

protected int _decrementValueView = R.id.decrement_value;
protected int _previousValueView = R.id.previous_value;
protected int _currentValueView = R.id.current_value;
protected int _nextValueView = R.id.next_value;

public YearPicker(Context context) {
super(context);
}

public YearPicker(Context context, AttributeSet attrs) {
super(context, attrs);
Calendar calendar = Calendar.getInstance();
_maxValue = calendar.get(Calendar.YEAR);
_currentValue = _maxValue - ((_maxValue - _minValue) / 2);

}

@Override
protected void onLayout(boolean changed, int l, int t, int r, int b) {
super.onLayout(changed, l, t, r, b);

TextView curView = (TextView) findViewById(_currentValueView);
curView.setText(Integer.toString(_currentValue));
findViewById(_decrementValueView).setOnClickListener(
_onDecrementValueClick);
}

protected OnClickListener _onDecrementValueClick = new OnClickListener() {
@Override
public void onClick(View v) {
_currentValue--;
TextView curView = (TextView) findViewById(_currentValueView);
curView.setText(Integer.toString(_currentValue));
}
};
}

主文件
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
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" />
<include
layout="@layout/year_picker"/>

</LinearLayout>

year_picker.xml
<view xmlns:android="http://schemas.android.com/apk/res/android"
class="localhost.yearpicker.YearPicker"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >

<Button
android:id="@+id/decrement_value"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Button" />

<TextView
android:id="@+id/previous_value"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Small Text"
android:textAppearance="?android:attr/textAppearanceSmall" />

<TextView
android:id="@+id/current_value"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Medium Text"
android:textAppearance="?android:attr/textAppearanceMedium" />

<TextView
android:id="@+id/next_value"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Small Text"
android:textAppearance="?android:attr/textAppearanceSmall" />

<Button
android:id="@+id/increment_value"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Button" />

</view>

最佳答案

在你的情况下,我只会扩展一个更好的 ViewGroup,将一个 XML - 用于样式和定位 View - 膨胀到其中,获取对这些 View 的访问,添加所有相关的设置/获取方法,就是这样。
如果相关,您还可以为您的组件定义属性以在 XML 中使用它时调整其自定义功能。

关于android - 自定义组件或常规组合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10589960/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com