如何安排适配器android中的问题(填写空白)的布局

时间:2017-02-03 11:14:37

标签: android android-linearlayout relativelayout

我正在将 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>

但我希望列表视图中的项目水平滚动。当然,如果我发表评论,horizo​​ntall scrollview textviews就会省略一些字符。

提前致谢

3 个答案:

答案 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);