我正在将 TExtView , edittext 和 TExtView 扩展到适用于listView的适配器,以解决以下不同问题:
你的名字是什么______。 tajmahal在_______国家。 ________是一个苹果。
<HorizontalScrollView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:fillViewport="true">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:fitsSystemWindows="true"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/newtextview"
android:gravity="center"
android:padding="5dp"
android:textColor="@color/black"/>
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/blank_set"
android:ems="3"
android:padding="5dp"
android:inputType="text"
android:textColor="@color/black"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/black"
android:padding="5dp"
android:id="@+id/textQuestiontwo"/>
</LinearLayout>
</HorizontalScrollView>
但我不希望列表视图中的项目水平滚动。当然,如果我发表评论,horizontall scrollview textviews就会省略一些字符。
提前致谢
答案 0 :(得分:1)
这不简单,
你必须在特定的布局中水平排列特定数量的控件(EditText,Button等),然后在下面添加相同的布局并使用控件等等......
1。您需要使用多个水平方向的LinearLayout
2. 按照您的顺序将所需的项目添加到其中(您可以按重量管理项目)
确保覆盖所需的屏幕分辨率。
虽然您可以以动态方式实现相同的实现但是非常耗时,但您需要计算设备的可用宽度,然后将所需的项目动态添加到布局中,但不建议这样做。 < / p>
答案 1 :(得分:0)
尝试使用WebView和<input>
标记在您的上下文中显示空白元素。您可以使用css
修饰空白格式和javascript,以获取<input>
代码中的值。
答案 2 :(得分:0)
我已根据需要实现了类似功能。将以下两个文件复制到您的项目中。
FillObject.java
public class FillObject {
public String text;
public Boolean isTextView;
public int lineNumber;
public FillObject(String text, Boolean isTextView, int lineNumber) {
this.text = text;
this.isTextView = isTextView;
this.lineNumber = lineNumber;
}
public String getText() {
return text;
}
public void setText(String text) {
this.text = text;
}
public Boolean getTextView() {
return isTextView;
}
public void setTextView(Boolean textView) {
isTextView = textView;
}
public int getLineNumber() {
return lineNumber;
}
public void setLineNumber(int lineNumber) {
this.lineNumber = lineNumber;
}
}
FillInTheBlank.java
public class FillInTheBlank {
public static ArrayList<EditText> createFillInTheBlanks(Context context, LinearLayout linearl, ArrayList<FillObject> map) {
ArrayList<EditText> editTextArrayList = new ArrayList<>();
int lineNumber = 0;
LinearLayout linearLayout = null;
for (FillObject fillObject : map) {
if (fillObject.getLineNumber() != lineNumber) {
lineNumber = fillObject.getLineNumber();
linearLayout = new LinearLayout(context);
linearLayout.setLayoutParams(new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT));
linearLayout.setOrientation(LinearLayout.HORIZONTAL);
linearl.addView(linearLayout);
}
if (fillObject.getTextView()) {
TextView textView = new TextView(context);
textView.setText(fillObject.getText());
LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(
ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
layoutParams.setMargins(16, 0, 16, 16);
textView.setLayoutParams(layoutParams);
textView.setTextSize(20f);
textView.setGravity(Gravity.CENTER_VERTICAL);
linearLayout.addView(textView);
} else {
EditText editText = new EditText(context);
editText.setHint(fillObject.getText());
LinearLayout.LayoutParams layoutParams1 = new LinearLayout.LayoutParams(
ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
layoutParams1.setMargins(16, 0, 16, 16);
editText.setLayoutParams(layoutParams1);
editText.setGravity(Gravity.CENTER_VERTICAL);
linearLayout.addView(editText);
editTextArrayList.add(editText);
}
}
return editTextArrayList;
}
}
使用方法:
// param1 = "string"
// param2 = true(textview), false(edittext)
// param3 = line number(1,2,3)
fillInTheBlanks.add(new FillObject("what is your name ", true, 1));
fillInTheBlanks.add(new FillObject("<name here?", false, 1));
fillInTheBlanks.add(new FillObject(".tajmahal is in ", true, 2));
fillInTheBlanks.add(new FillObject("<country here>", false, 2));
fillInTheBlanks.add(new FillObject(".country", true, 3));
fillInTheBlanks.add(new FillObject("<something>", false, 3));
fillInTheBlanks.add(new FillObject("is an apple", true, 3));
//rootLinearLayout is a LinearLayout with vertical orienation
ArrayList<EditText> editTextArrayList = FillInTheBlank.createFillInTheBlanks(getContext(), rootLinearLayout, fillInTheBlanks);