activity_checklist_detail.xml
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 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:orientation="vertical"
android:layout_height="match_parent"
tools:context=".ChecklistDetail">
<include
android:id="@ id/include4"
layout="@layout/toolbar"/>
<LinearLayout
android:id="@ id/linear_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/purple_200"
android:layout_margin="10dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@ id/include4"
android:orientation="horizontal">
</LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
這是 ChecklistDetail 活動
public class ChecklistDetail extends AppCompatActivity {
Toolbar toolbar;
LinearLayout linearLayout;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_checklist_detail);
toolbar= findViewById(R.id.tool_bar);
setSupportActionBar(toolbar);
linearLayout = findViewById(R.id.linear_layout);
Intent intent = getIntent();
int id = intent.getIntExtra("id",0);
String status = intent.getStringExtra("status");
String content = intent.getStringExtra("content");
String[] statusSplit = status.split("\n");
String[] contentSplit = content.split("\n");
int i=0;
for ( i = 0; i < contentSplit.length; i ) {
final int j = i;
CheckBox checkBox = new CheckBox(this);
EditText editText = new EditText(this);
boolean state;
if(statusSplit[i].equals("1"))
state=true;
else
state=false;
editText.setText(contentSplit[i]);
checkBox.setChecked(state);
SpannableString spannableString = new SpannableString(editText.getText().toString());
StrikethroughSpan strikethroughSpan = new StrikethroughSpan();
spannableString.setSpan(strikethroughSpan,0, checkBox.getText().length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
if(checkBox.isChecked()) {
editText.setText(spannableString);
}
linearLayout.addView(checkBox);
linearLayout.addView(editText);
checkBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
SpannableString spannableString = new SpannableString(editText.getText().toString());
StrikethroughSpan strikethroughSpan = new StrikethroughSpan();
spannableString.setSpan(strikethroughSpan,0, editText.getText().length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
if(checkBox.isChecked()) {
editText.setText(spannableString);
}
else {
editText.setText(contentSplit[j]);
}
}
});
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater menuInflater = getMenuInflater();
menuInflater.inflate(R.menu.edit_save_menu,menu);
return true;
}
}
我想獲得如下圖所示的視圖。

但沒有什么對我有用。如果我將 activity_checklist_detail 中的布局更改為水平或垂直,我將得到如下圖所示。
如果我設定為水平,我會得到
如果我改為垂直,我會在下面得到這樣的

注意:我知道使用 RecyclerView 是最好的選擇,但是這里我沒有很多專案。提前致謝。
uj5u.com熱心網友回復:
與其直接將視圖添加到您的布局中,不如創建一個單獨的布局并將其添加到您的LinearLayout這樣
創建單獨的布局檔案
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
>
<CheckBox
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
<EditText
android:id="@ id/edt_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
</LinearLayout>
像這樣在您的線性布局中添加視圖
class MainActivity : AppCompatActivity() {
lateinit var binding: ActivityMainBinding
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivityMainBinding.inflate(layoutInflater)
setContentView(binding.root)
for (i in 0..5) {
val layoutBinding = TaskOneBinding.inflate(layoutInflater)
layoutBinding.edtName.hint = "position $i"
binding.linearLayout.addView(layoutBinding.root)
}
}
}
Java 代碼
public class TestActivity extends AppCompatActivity {
ActivityMainBinding mainBinding;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mainBinding = ActivityMainBinding.inflate(getLayoutInflater());
setContentView(mainBinding.getRoot());
for (int i = 0; i < 5; i ) {
TaskOneBinding taskOneBinding = TaskOneBinding.inflate(getLayoutInflater());
taskOneBinding.edtName.setHint("position " i);
mainBinding.linearLayout.addView(taskOneBinding.getRoot());
}
}
}
輸出

轉載請註明出處,本文鏈接:https://www.uj5u.com/net/497177.html
