Как я могу использовать код java для создания дизайна на android - PullRequest
0 голосов
/ 07 августа 2020

Я пытаюсь поместить TextView в FrameLayout в линейный макет. Когда я использую XML, все нормально, но с кодом Java возникают проблемы. Поэтому я не могу переместить текстовое представление с помощью layout_gravity в коде Java. Кроме того, я не понимаю, почему текст соответствует родительскому элементу, когда я использую содержимое для переноса параметров. должно быть

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);

Ответы [ 2 ]

0 голосов
/ 07 августа 2020

вы добавляете TextView tv к FrameLayout, поэтому вы должны использовать FrameLayout.LayoutParams для этого TextView

FrameLayout.LayoutParams p = new FrameLayout.LayoutParams(
    FrameLayout.LayoutParams.WRAP_CONTENT, FrameLayout.LayoutParams.WRAP_CONTENT);
p.gravity = Gravity.LEFT;
tv.setLayoutParams(p);
fl.addView(tv);
0 голосов
/ 07 августа 2020

Вам нужно LayoutParams для вашего Textview, а не Linearlayout Params. Это вызывает проблему. Вы можете создать его так:

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