繁体   English   中英

如何以编程方式将TextView和EditText对齐到水平LinearLayout中?

[英]How to align the TextView and EditText into horizontal LinearLayout programmatically?

这是我所拥有的:

LinearLayout horizontalLL = new LinearLayout(thisActivity);
horizontalLL.setOrientation(LinearLayout.HORIZONTAL);
horizontalLL.setLayoutParams(new LinearLayoutCompat.LayoutParams(LinearLayoutCompat.LayoutParams.MATCH_PARENT, LinearLayoutCompat.LayoutParams.WRAP_CONTENT,1));

TextView captionTV = new TextView(thisActivity);
captionTV.setText(element.description);

captionTV.setLayoutParams(new LinearLayoutCompat.LayoutParams(LinearLayoutCompat.LayoutParams.WRAP_CONTENT, LinearLayoutCompat.LayoutParams.WRAP_CONTENT));
editText.setLayoutParams(new LinearLayoutCompat.LayoutParams(LinearLayoutCompat.LayoutParams.WRAP_CONTENT, LinearLayoutCompat.LayoutParams.WRAP_CONTENT,0.6f));

horizontalLL.addView(captionTV);
horizontalLL.addView(editText);

LL.addView(horizontalLL);

但是结果很糟糕:editText仍然很短,无法填充水平线性布局。 我也尝试为captionTV设置权重,但仍然没有结果。

请按以下方式进行更改

editText.setLayoutParams(new LinearLayout.LayoutParams(0, LinearLayout.LayoutParams.WRAP_CONTENT,0.6f));

您可以在此处使用LinearLayout.LayoutParams.MATCH_PARENTLinearLayout.LayoutParams.WRAP_CONTENT代替0

如果可能,将所有LinearLayoutCompat替换为LinearLayout

如果您希望您的EditText自动覆盖剩余空间 ,请尝试以下代码:

LinearLayout horizontalLL = new LinearLayout(this);
        horizontalLL.setLayoutParams(new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));
        horizontalLL.setOrientation(LinearLayout.HORIZONTAL);


        TextView captionTV = new TextView(this);
        captionTV.setText("element.description");

        captionTV.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT));
        editText.setLayoutParams(new LinearLayout.LayoutParams(0, LinearLayout.LayoutParams.WRAP_CONTENT , 1));

        horizontalLL.addView(captionTV);
        horizontalLL.addView(editText);

        LL.addView(horizontalLL);

您需要使用以下代码:

 LinearLayout ll1 = (LinearLayout)findViewById(R.id.ll1);

        android.widget.LinearLayout horizontalLL = new android.widget.LinearLayout(this);
        horizontalLL.setOrientation(android.widget.LinearLayout.HORIZONTAL);
        horizontalLL.setLayoutParams(new android.widget.LinearLayout.LayoutParams(android.widget.LinearLayout.LayoutParams.MATCH_PARENT, 150,1f));

        TextView captionTV = new TextView(this);
        captionTV.setText("Hello textview ");
        captionTV.setTextColor(Color.BLUE);
        captionTV.setLayoutParams(new android.widget.LinearLayout.LayoutParams(0, android.widget.LinearLayout.LayoutParams.WRAP_CONTENT,0.4f));
        horizontalLL.addView(captionTV);

        EditText editText = new EditText(this);
        editText.setText("Hello edittext ");
        editText.setTextColor(Color.BLUE);
        editText.setLayoutParams(new android.widget.LinearLayout.LayoutParams(0, android.widget.LinearLayout.LayoutParams.WRAP_CONTENT,0.6f));

        horizontalLL.addView(editText);
        ll1.addView(horizontalLL);

因为在XML权重中定义如下:

<LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal"
            android:weightSum="1.0">
            <TextView
                android:layout_width="0dp"
                android:layout_height="wrap_content" 
                android:layout_weight="0.40"
                android:text="test"/>
            <EditText
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_weight="0.60"
                android:text="test"/>
        </LinearLayout> 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM