将 TextView 宽度设置为 0dp 不起作用

发布于 2024-12-10 08:20:27 字数 1406 浏览 0 评论 0原文

如何以编程方式将 TextView 的宽度设置为 0dp ?我试图放入 LinearLayout 几个 TextView,但宽度都相同,当我放入 xml 时

<LinearLayout 
android:layout_width="fill_parent"
android:layout_height="wrap_content"
 >
 <TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:layout_gravity="left"
android:gravity="left"
                    />
 <TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:layout_gravity="center_horizontal"
android:gravity="center_horizontal"
        />
 <TextView
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="wrap_content"
android:text="test"
android:layout_gravity="right"
android:gravity="right"
        />
</LinearLayout>

,但在代码中尝试时,

TextView txtTemp = new TextView(this);
txtTemp.setText(captures.get(i));
LinearLayout.LayoutParams tempLL = (LinearLayout.LayoutParams) txtTemp
                        .getLayoutParams();
tempLL.width =0;
tempLL.height = LinearLayout.LayoutParams.WRAP_CONTENT;
tempLL.weight = 1;

if (i == 0) {
    tempLL.gravity = Gravity.LEFT;
        }
if (i == (captures.size() - 1)) {
    tempLL.gravity = Gravity.RIGHT;
} else {
    tempLL.gravity = Gravity.CENTER;
                }
    txtTemp.setLayoutParams(tempLL);

我在 tempLL.width null 异常上遇到了异常。如何解决这个问题?

How to set programmatically width of TextView to be 0dp ? I am trying to put in LinearLayout couple TextViews but all to be same width, and when I put in xml like

<LinearLayout 
android:layout_width="fill_parent"
android:layout_height="wrap_content"
 >
 <TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:layout_gravity="left"
android:gravity="left"
                    />
 <TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:layout_gravity="center_horizontal"
android:gravity="center_horizontal"
        />
 <TextView
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="wrap_content"
android:text="test"
android:layout_gravity="right"
android:gravity="right"
        />
</LinearLayout>

but when in code try like

TextView txtTemp = new TextView(this);
txtTemp.setText(captures.get(i));
LinearLayout.LayoutParams tempLL = (LinearLayout.LayoutParams) txtTemp
                        .getLayoutParams();
tempLL.width =0;
tempLL.height = LinearLayout.LayoutParams.WRAP_CONTENT;
tempLL.weight = 1;

if (i == 0) {
    tempLL.gravity = Gravity.LEFT;
        }
if (i == (captures.size() - 1)) {
    tempLL.gravity = Gravity.RIGHT;
} else {
    tempLL.gravity = Gravity.CENTER;
                }
    txtTemp.setLayoutParams(tempLL);

I got exception on tempLL.width null exception. How to solve this ?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

治碍 2024-12-17 08:20:27

而不是使用

LinearLayout.LayoutParams tempLL = (LinearLayout.LayoutParams) txtTemp
                    .getLayoutParams();
            tempLL.width =0;
            tempLL.height = LinearLayout.LayoutParams.WRAP_CONTENT;
            tempLL.weight = 1;

尝试这个

LinearLayout.LayoutParams tempLL = new LinearLayout.LayoutParams(0,
        LayoutParams.WRAP_CONTENT,1.0);
txtTemp.setLayoutParams(tempLL);

您正在创建一个新的文本视图,并且尚未指定布局参数。所以 getLayoutParams 应该返回 null。因此,创建一个新的layoutparam对象并将其设置为新的textview。

Instead of using

LinearLayout.LayoutParams tempLL = (LinearLayout.LayoutParams) txtTemp
                    .getLayoutParams();
            tempLL.width =0;
            tempLL.height = LinearLayout.LayoutParams.WRAP_CONTENT;
            tempLL.weight = 1;

try this

LinearLayout.LayoutParams tempLL = new LinearLayout.LayoutParams(0,
        LayoutParams.WRAP_CONTENT,1.0);
txtTemp.setLayoutParams(tempLL);

You are creating a new textview and there is no layoutparams specified yet. So getLayoutParams should return null. So create a new layoutparam object and set that to the new textview.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文