在Android中以编程方式在Gridlayout中创建EditText

时间:2015-09-26 14:23:10

标签: android

我想在每次单击按钮(创建)时创建editText。并设置id,column和row。

Gridlayout id:inputTasksLayout button id:addnewTask

当我点击按钮时,它将在第1列第1行创建一个editText并分配一个id(task1)。

当我再次点击该按钮时,它将在第1列第2行创建另一个editText并分配一个id(task2)。

当我再次单击该按钮时,它将在第1列第2行中创建另一个editText并分配一个id(task3)。等等..

我想知道它是否可行。如果是的话,你能提供一些示例代码吗?我尝试了其他来源,但他们都在LinearLayout。我想把它放在GridLayout中。

2 个答案:

答案 0 :(得分:0)

是的,当然有可能。这是创建视图的两种主要方式之一。好的旧代码方式...我更喜欢它超过xml btw。但那就是我。我在Code中创建了近90%的View创建和布局,因为我不喜欢" dp"例如,可以说某种观点有多宽或多高......

您只需通过

创建一个新的EditText
new EditText();

然后给它一个高度和一个宽度。 检查您可以在此处使用的方法http://developer.android.com/reference/android/widget/TextView.html (EditText继承TextView)

为了您的目的,请检查GridView的文档: http://developer.android.com/guide/topics/ui/layout/gridview.html http://developer.android.com/reference/android/widget/GridView.html

最重要的是: http://developer.android.com/guide/topics/ui/declaring-layout.html#AdapterViews

最后一个链接显示了如何将项目插入到网格视图等布局中。

它就像XML一样简单但只需要更多的代码......

编辑: 随着您继续坚持使用代码解决方案,请记住堆栈溢出并不是要求您在问题中使用代码解决方案。这是一个平台,无需在代码中获得特定的解决方案。

检查我的链接的开头文字:

"布局定义用户界面的可视结构,例如活动或应用程序窗口小部件的UI。您可以通过两种方式声明布局:

以XML格式声明UI元素。 Android提供了一个简单的XML词汇表,它对应于View类和子类,例如小部件和布局的类。 在运行时实例化布局元素。您的应用程序可以以编程方式创建View和ViewGroup对象(并操纵其属性)。 Android框架使您可以灵活地使用这些方法中的一种或两种来声明和管理应用程序的UI。例如,您可以在XML中声明应用程序的默认布局,包括将出现在其中的屏幕元素及其属性。然后,您可以在应用程序中添加代码,这些代码将在运行时修改屏幕对象的状态,包括以XML格式声明的对象。"

因此,如果您阅读文本,您可以调整您将学习的内容,不仅适用于edittext,还适用于所有视图及其子类,而不是那么难......

同样,SO不适用于要求明确的代码解决方案

答案 1 :(得分:0)

是可以通过单击按钮动态编辑EditText视图下面是示例代码。

activity_main.xml中

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/layout_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">

<GridLayout
    android:id="@+id/inputTasksLayout"
    android:layout_width="fill_parent"
    android:layout_height="0dp"
    android:layout_weight="1"
    android:columnCount="2"
    android:rowCount="10">


</GridLayout>

<Button
    android:id="@+id/addnewTask"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:onClick="addView"
    android:text="Add" />
</LinearLayout>

MainActivity.java

public class MainActivity extends AppCompatActivity {
int rowIndex = 1;
int colIndex = 0;
private GridLayout gridLayout;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.inputTasksLayout);
    gridLayout = (GridLayout) findViewById(R.id.gridView);

}

public void addView(View view) {
    EditText editText = new EditText(this);
    GridLayout.LayoutParams param = new GridLayout.LayoutParams();
    param.height = ViewGroup.LayoutParams.WRAP_CONTENT;
    param.width = GridLayout.LayoutParams.MATCH_PARENT;
    param.rowSpec = GridLayout.spec(rowIndex);
    param.columnSpec = GridLayout.spec(colIndex);
    editText.setLayoutParams(param);
    if (rowIndex == 1) {
        editText.setId(R.id.task1);
    }
    if (rowIndex == 2) {
        editText.setId(R.id.task2);
    }

    gridLayout.addView(editText);
    rowIndex++;
 }
}

值文件夹中的ids.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
<item name="task1" type="id" />
<item name="task2" type="id" />
<item name="task3" type="id" />
</resources>