重构新可见组件的布局

时间:2014-11-23 04:25:41

标签: java android xml components visibility

        if(v.getId()==keyboard.getId())
        {
            //DisplayMetrics displaymetrics = new DisplayMetrics();    
            //getWindowManager().getDefaultDisplay().getMetrics(displaymetrics);
            //int width = displaymetrics.widthPixels;
            //int editTextWidth = width*(2/3);   
            //int sendTextWidth = width*(1/3);  
            keyboard.setVisibility(View.GONE);
            a.setVisibility(View.GONE);
            b.setVisibility(View.GONE);
            c.setVisibility(View.GONE);
            d.setVisibility(View.GONE);

            editText.setVisibility(View.VISIBLE);
            //editText.setWidth(editTextWidth);
            send.setVisibility(View.VISIBLE);
            //send.setWidth(sendTextWidth);
        }

您好。对于我的主页面布局,我的页面上显示了一些按钮,其中一个按钮名为keyboard。单击keyboard按钮后,所有按钮将变为“不可见”。然后editText和提交按钮将“可见”。 (因此,用户可以使用屏幕键盘输入内容,然后提交输入)。这就是上面的代码所示。

我目前无法构建新可见组件的布局。

这是editText和提交按钮的xml代码:

   <EditText
        android:id="@+id/editText"
        android:layout_width="1dp"
        android:layout_height="wrap_content"
        android:layout_weight="0"
        android:inputType="textMultiLine|textNoSuggestions" />


    <Button
        android:id="@+id/send"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:onClick="speak"
        android:text="@string/sendCommand" />

正如您所看到的,我只是将组件的宽度设置为零,因此它不会干扰应用程序启动时最初的布局可见按钮。我的问题是你如何设置刚刚设置为可见的新组件的尺寸和位置?另请查看我注释掉的代码。

@ eclipse1203:我无法使用android:visibility="gone",因为editText和提交按钮发生在可见按钮的相同位置。

2 个答案:

答案 0 :(得分:0)

您可以使用所需的高度/宽度设置EditText和Button,然后设置属性

android:visibility="gone"

他们每个人。如果您真的想在代码中修改布局,那么您可以执行以下操作:( ViewGroup是LinearLayout,RelativeLayout等)

[ViewGroup].LayoutParams params = new [ViewGroup].LayoutParams(width, height);
params.setMargins(left, top, right, bottom);

EditText text = new EditText(context);
text.setLayoutParams(params);

答案 1 :(得分:0)

如果你不能使用 android:visibility="gone"然后您应该使用android:visibility="invisible",因为在这种情况下,您会查看占用空间以进行布局。