将EditView与EditText对齐

时间:2015-02-06 18:54:23

标签: java android android-layout android-edittext textview

我想将TextViewEditText对齐。当TextView不高于窗口的上边距(红线)和 EditText (绿线)之间的空格时,以下代码运行良好),就像截图一样。

当TextView有比屏幕截图更多的行时,会出现问题:它只是"溢出" EditText,但我希望将EditText保持在前台。

换句话说:我想将TextView的底部边距放在绿线上,让它朝红线方向增长,以保持EditText的可见性。

enter image description here

// LINEAR LAYOUT
LinearLayout layout = new LinearLayout(getApplicationContext());
layout.setOrientation(LinearLayout.VERTICAL);
setContentView(layout);

// TEXTVIEW
// how to set bottom margins programmatically?
layout.addView(tv);

// EDITTEXT
// place the EditText to the bottom of the layout, working well
et.setGravity(Gravity.BOTTOM);
et.setInputType(InputType.TYPE_CLASS_TEXT);

LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT);
params.gravity = Gravity.BOTTOM;
et.setLayoutParams(params);
layout.addView(et);

5 个答案:

答案 0 :(得分:2)

这应该适合你:

// LINEAR LAYOUT
LinearLayout layout = new LinearLayout(getApplicationContext());
layout.setOrientation(LinearLayout.VERTICAL);
setContentView(layout);

// TEXTVIEW
LinearLayout.LayoutParams paramstv = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT,1f);
tv.setLayoutParams(paramstv);
layout.addView(tv);

// EDITTEXT
et.setGravity(Gravity.BOTTOM);
et.setInputType(InputType.TYPE_CLASS_TEXT);

LinearLayout.LayoutParams etparams = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT,8f);
etparams.gravity = Gravity.BOTTOM;
et.setLayoutParams(etparams);
layout.addView(et);

我想关键是将EditText和TextView包装成LayoutParams。可能你必须调整重量。

如果这个不起作用,请尝试使用XML文件创建布局(处理更容易)。

答案 1 :(得分:1)

尝试使用相对布局,并将edittext设置在父级的底部。 如果您不想切换到相对布局,请尝试在文本视图之前声明编辑文本..

答案 2 :(得分:0)

您可以将EditText类型的属性设置为textMultiline

答案 3 :(得分:0)

当您正在使用LinearLayout时,请为您的观看次数设置weight

LinearLayout.LayoutParams paramTextView = new LinearLayout.LayoutParams(
                         LayoutParams.MATCH_PARENT,
                         LayoutParams.MATCH_PARENT, 1.0f);
tv.setlayoutParams(paramTextView);

LinearLayout.LayoutParams paramEditText = new LinearLayout.LayoutParams(
                         LayoutParams.MATCH_PARENT,
                         LayoutParams.MATCH_PARENT, 3.0f);
et.setlayoutParams(paramEditText);

这将为您提供您期望的结果

答案 4 :(得分:0)

以下xml代码可以解决您的问题......

<RelativeLayout 
android:layout_height="match_parent"
android:layout_width="match_parent">

<SrollView 
android:layout_height="match_parent"
android:layout_width="match_parent"
android:layout_above="@+id/edittext_id"
android:layout_margin="7dp">

<TextView
        android:id="@+id/text_id"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"/>

</SrollView>
<EditText 
android:id="@+id/edittext_id"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="10dp"
android:layout_alignParentBottom="true"/>

</RelativeLayout>