关于“Android 代码写控件代替XML简单实例”的攻略,我会按照以下步骤讲解:
1.创建一个布局文件和对应的Activity
首先,我们需要创建一个布局文件和对应的Activity,这个Activity会用到我们后面创建的控件。在XML文件中添加如下代码:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/root_layout"
android:orientation="vertical" >
<TextView
android:id="@+id/title_textview"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Hello World!" />
<EditText
android:id="@+id/input_edittext"
android:layout_width="300dp"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:hint="请输入内容"
android:inputType="text"
android:textSize="16sp" />
<Button
android:id="@+id/submit_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="提交" />
</LinearLayout>
2.创建一个自定义控件类
接下来,我们创建一个自定义控件类,这个类会用来动态生成控件。在该类中,我们添加如下代码:
public class FormView extends LinearLayout {
private Context mContext;
public FormView(Context context) {
super(context);
mContext = context;
}
public FormView(Context context, AttributeSet attrs) {
super(context, attrs);
mContext = context;
}
public void addTitle(String title) {
TextView titleTextView = new TextView(mContext);
titleTextView.setText(title);
addView(titleTextView);
}
public void addTextInput(String hint) {
EditText inputEditText = new EditText(mContext);
inputEditText.setHint(hint);
inputEditText.setInputType(InputType.TYPE_CLASS_TEXT);
addView(inputEditText);
}
public void addButton(String buttonText) {
Button submitButton = new Button(mContext);
submitButton.setText(buttonText);
addView(submitButton);
}
}
3.在Activity中使用自定义控件
最后,我们在Activity中使用自定义控件。在该Activity中添加如下代码:
public class MainActivity extends AppCompatActivity {
private FormView mFormView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mFormView = findViewById(R.id.form_view);
mFormView.addTitle("请输入以下内容");
mFormView.addTextInput("请输入用户名");
mFormView.addTextInput("请输入密码");
mFormView.addButton("登录");
}
}
这样就可以实现动态生成控件了。下面,我会举两个具体的示例说明:
示例1
假设我们要在一个Activity中动态生成表单控件,包括一个TextView、一个EditText和一个Button。我们可以通过以下方式在代码中动态创建这些控件:
LinearLayout rootLayout = findViewById(R.id.root_layout);
// 创建TextView
TextView titleTextView = new TextView(this);
titleTextView.setText("请输入以下内容");
// 创建EditText
EditText inputEditText = new EditText(this);
inputEditText.setHint("请输入用户名");
// 创建Button
Button submitButton = new Button(this);
submitButton.setText("登录");
// 添加到布局中
rootLayout.addView(titleTextView);
rootLayout.addView(inputEditText);
rootLayout.addView(submitButton);
这样,现在我们就可以在代码中动态生成表单控件了。
示例2
假设我们要在一个Fragment中动态生成自定义控件,包括一个TextView、一个EditText和一个Button。我们可以通过以下方式实现:
首先,我们创建自定义控件FormView:
public class FormView extends LinearLayout {
private Context mContext;
public FormView(Context context) {
super(context);
mContext = context;
}
public FormView(Context context, AttributeSet attrs) {
super(context, attrs);
mContext = context;
}
public void addTitle(String title) {
TextView titleTextView = new TextView(mContext);
titleTextView.setText(title);
addView(titleTextView);
}
public void addTextInput(String hint) {
EditText inputEditText = new EditText(mContext);
inputEditText.setHint(hint);
inputEditText.setInputType(InputType.TYPE_CLASS_TEXT);
addView(inputEditText);
}
public void addButton(String buttonText) {
Button submitButton = new Button(mContext);
submitButton.setText(buttonText);
addView(submitButton);
}
}
然后,在Fragment中我们可以这样使用它:
LinearLayout rootLayout = (LinearLayout) inflater.inflate(R.layout.fragment_blank, container, false);
FormView formView = new FormView(getActivity());
formView.addTitle("请输入以下内容");
formView.addTextInput("请输入用户名");
formView.addTextInput("请输入密码");
formView.addButton("登录");
rootLayout.addView(formView);
这样就可以在Fragment中动态生成自定义控件了。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Android 代码写控件代替XML简单实例 - Python技术站