首页 > 解决方案 > 我如何使用 java 代码在 android 上创建设计

问题描述

我正在尝试将 TextView 放入 FrameLayout 到线性布局中。当我使用 XML 进行操作时,没问题,但使用 Java 代码时会出现问题。所以我不能在 Java 代码中使用 layout_gravity 移动文本视图。另外,当我使用参数包装内容时,我不明白为什么文本匹配父项。一定是

XML 代码

<LinearLayout
    android:id="@+id/chatBox"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

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

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

            <TextView
                android:id="@+id/textView4"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="TextView"
                android:layout_gravity="right"/>
        </FrameLayout>

Java 代码

FrameLayout fl = new FrameLayout(this);
fl.setLayoutParams(new FrameLayout.LayoutParams(FrameLayout.LayoutParams.MATCH_PARENT, 
FrameLayout.LayoutParams.MATCH_PARENT));

TextView tv = new TextView(this);
tv.setText(message);
LinearLayout.LayoutParams p = new 
LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, 
LinearLayout.LayoutParams.WRAP_CONTENT);
p.gravity = Gravity.LEFT; tv.setLayoutParams(p);
fl.addView(tv);
LinearLayout chatbox = (LinearLayout)  findViewById(R.id.chatBox);
chatbox.addView(fl, 0);

标签: androidandroid-linearlayoutandroid-framelayout

解决方案


您需要为 Textview 而不是 Linearlayout Params 的 LayoutParams。这就是问题所在。你可以像这样创建它;

tv.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT))

推荐阅读