Страница 1 из 1

Не получается программно доьавить View.

Добавлено: 16 ноя 2012, 12:35
JDev
Здравствуйте, тривиальная задача, но у меня что-то не срабатывает..
Делаю маленький чат, и нужно по клике на кнопочку "send" добавлять новый вид с текстом сообщения.
Пока-что для теста пробую добавить обычный LinearLayout с двумя кнопками.
Вот что я пробую сделать.

chat.xml

Код: Выделить всё

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" 
    android:background="@color/chatBackground">

    <ScrollView
        android:layout_width="fill_parent"
        android:layout_height="0dip"
        android:weightSum="1.0" 
        android:id="@+id/scrollChatMessagesOutput">

        <TextView
            android:id="@+id/chatMessagesOutput"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:paddingLeft="5dp"
            android:paddingRight="5dp"
            android:paddingTop="5dp"
            android:text="@string/chat_Text" />
    </ScrollView>

    <LinearLayout
        android:id="@+id/chatBottomLayout"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:baselineAligned="true"
        android:orientation="horizontal"
        android:paddingBottom="5dp"
        android:paddingLeft="5dp"
        android:paddingRight="5dp" >

        <EditText
            android:id="@+id/chatTextInput"
            android:layout_width="0dip"
            android:layout_height="45dp"
            android:layout_weight="1" >

            <requestFocus>
            </requestFocus>
        </EditText>

        <Button
            android:id="@+id/btnSend"
            android:layout_width="125dp"
            android:layout_height="45dp"
            android:text="@string/btnSend" 
            android:onClick="onChatSendBtnClick">
        </Button>
    </LinearLayout>

</LinearLayout>
chat_message.xml

Код: Выделить всё

<LinearLayout  xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:weightSum="1.0" 
    android:id="@+id/chatMessage">

    <Button
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight=".70"
        android:text="left" />

    <Button
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight=".30"
        android:text="right" />

</LinearLayout>
onSendClick

Код: Выделить всё

	private void addMessageToStage(Message message){
		LinearLayout scrollChatMessagesOutput = (LinearLayout)findViewById(R.id.chatBottomLayout);

		LinearLayout insertPoint = (LinearLayout)findViewById(R.id.chatMessage);
		scrollChatMessagesOutput.addView(insertPoint);
	}

Re: Не получается программно доьавить View.

Добавлено: 16 ноя 2012, 12:59
AndreyI
Прежде чем добавлять View вам нужно сначала его создать. xml файл это всего лишь разметка по которой его нужно создавать, но не сам объект.
Для создания объектов из разметки в Андроид есть LayoutInflater

Re: Не получается программно доьавить View.

Добавлено: 16 ноя 2012, 13:07
JDev
ТОисть сначала создать объект из xml с помощью LayoutInflater, а потом добавлять addView?

Re: Не получается программно доьавить View.

Добавлено: 16 ноя 2012, 13:25
rezak90
JDev писал(а):ТОисть сначала создать объект из xml с помощью LayoutInflater, а потом добавлять addView?
не обязательно, но так как вы из одного xml пытаетесь добавить view к другому, то нужно его инлфейтнуть как сказали выше.