2017-02-09 16 views
0

У меня есть таблица с двумя EditText в первых двух строках и пучок кнопок, работающих как пользовательская клавиатура в других строках. (для простоты просто включен только первый ряд кнопок в xml ниже) Представления EditText устанавливаются как прокручиваемые с помощью android:scrollbars="vertical". Когда я нажимаю кнопку на моей пользовательской клавиатуре, я добавляю значение в строку ввода, а затем устанавливаю текст с помощью метода EditText.setText(). Моя проблема заключается в том, что если текст слишком длинный, он переходит к следующей строке, изменяя размер полного представления EditText. В противном случае, то же самое с клавиатурой Android по умолчанию работает как шарм, переходя на следующую строку без изменения размера и отображения полосы прокрутки справа.

Вот XMLИзменение размера EditText при использовании «setText» вместо ввода клавиатуры

<TableLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/tableLayout1" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" > 

    <TableRow 
     android:id="@+id/tableRow1" 
     android:layout_weight="3" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:padding="0dip"> 

     <EditText 
      android:layout_weight="1" 
      android:scrollbars="vertical" 
      android:layout_height="match_parent" 
      android:id="@+id/input" 
      android:layout_span="2" 
      android:text="Type an expression to begin..." /> 

    </TableRow> 

    <TableRow 
     android:id="@+id/tableRow2" 
     android:layout_weight="3" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:padding="0dip"> 

     <EditText 
      android:layout_weight="1" 
      android:layout_height="match_parent" 
      android:scrollbars="vertical" 
      android:id="@+id/output" 
      android:layout_span="2" 
      android:text="Real time calculation"/> 
    </TableRow> 

    <View 
     android:layout_height="2dip" 
     android:background="#FF0000" /> 

    <TableRow 
     android:id="@+id/tableRow3" 
     android:layout_weight="1" 
     android:gravity="center" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:padding="0dp" > 

     <Button 
      android:layout_width="0dp" 
      android:minHeight="0dp" 
      android:minWidth="0dp" 
      android:background="@drawable/button_custom_bg" 
      android:layout_weight="1" 
      android:layout_height="match_parent" 
      android:id="@+id/button_clear" 
      android:text="C" /> 

     <Button 
      android:layout_width="0dp" 
      android:minHeight="0dp" 
      android:minWidth="0dp" 
      android:background="@drawable/button_custom_bg" 
      android:layout_weight="1" 
      android:layout_height="match_parent" 
      android:id="@+id/button_divide" 
      android:text="/" /> 

     <Button 
      android:layout_width="0dp" 
      android:minHeight="0dp" 
      android:minWidth="0dp" 
      android:background="@drawable/button_custom_bg" 
      android:layout_weight="1" 
      android:layout_height="match_parent" 
      android:id="@+id/button_multiply" 
      android:text="*" /> 

     <Button 
      android:layout_width="0dp" 
      android:minHeight="0dp" 
      android:minWidth="0dp" 
      android:background="@drawable/button_custom_bg" 
      android:layout_weight="1" 
      android:layout_height="match_parent" 
      android:id="@+id/button_delete" 
      android:text="DEL" /> 
    </TableRow> 

</TableLayout> 

В чем проблема с методом setText()? Кроме того, я хочу добавить фоновое изображение на EditText, изменяя его размер, чтобы адаптироваться к представлению без изменения размера EditText.

Любые предложения будут оценены

+0

Добавить желаемое изображение –

ответ

1
<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/tableLayout1" 
    android:orientation="vertical" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" > 

    <ScrollView 
     android:layout_width="match_parent" 
     android:layout_weight="1" 
     android:layout_height="0dp"> 
     <EditText 
      android:layout_width="match_parent" 
      android:layout_gravity="center" 
      android:layout_height="wrap_content" 
      android:background="@null" 
      android:id="@+id/input" 
      android:text="Type an expression to begin...\n\n\n\n\n\n\n\n\n ddfsfs\n\n\n erwr dsf" /> 
    </ScrollView> 
    <View 
     android:layout_width="match_parent" 
     android:layout_height="2dip" 
     android:background="#220000" /> 
    <ScrollView 
     android:layout_width="match_parent" 
     android:layout_weight="1" 
     android:layout_height="0dp"> 
     <EditText 
      android:layout_width="match_parent" 
      android:layout_gravity="center" 
      android:layout_height="wrap_content" 
      android:background="@null" 
      android:id="@+id/output" 
      android:text="Real time calculation"/> 
    </ScrollView> 

    <View 
     android:layout_width="match_parent" 
     android:layout_height="2dip" 
     android:background="#FF0000" /> 

    <LinearLayout 
     android:id="@+id/tableRow3" 
     android:gravity="center" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content"> 

     <Button 
      android:layout_width="0dp" 
      android:minHeight="0dp" 
      android:minWidth="0dp" 
      android:background="@drawable/ic_cross" 
      android:layout_weight="1" 
      android:padding="15dp" 
      android:layout_height="match_parent" 
      android:id="@+id/button_clear" 
      android:text="C" /> 

     <Button 
      android:layout_width="0dp" 
      android:minHeight="0dp" 
      android:minWidth="0dp" 
      android:background="@drawable/ic_cross" 
      android:layout_weight="1" 
      android:layout_height="match_parent" 
      android:id="@+id/button_divide" 
      android:text="/" /> 

     <Button 
      android:layout_width="0dp" 
      android:minHeight="0dp" 
      android:minWidth="0dp" 
      android:background="@drawable/ic_cross" 
      android:layout_weight="1" 
      android:layout_height="match_parent" 
      android:id="@+id/button_multiply" 
      android:text="*" /> 

     <Button 
      android:layout_width="0dp" 
      android:minHeight="0dp" 
      android:minWidth="0dp" 
      android:background="@drawable/ic_cross" 
      android:layout_weight="1" 
      android:layout_height="match_parent" 
      android:id="@+id/button_delete" 
      android:text="DEL" /> 
    </LinearLayout> 

</LinearLayout> 
+0

Спасибо, человек. Вы сделали мой день. Можете ли вы объяснить мне, почему я не использовал TableLayout для LinearLayout? – Razinar

0
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/tableLayout1" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" > 

    <TableRow 
     android:id="@+id/tableRow1" 
     android:layout_weight="3" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:padding="0dip"> 

     <EditText 
      android:layout_weight="1" 
      android:scrollbars="vertical" 
      android:layout_height="match_parent" 
      android:id="@+id/input" 
      android:layout_span="2" 
      android:maxLines="1" 
      android:lines="1" 
      android:inputType="text" 
      android:text="Type an expression to begin..." /> 

    </TableRow> 

    <TableRow 
     android:id="@+id/tableRow2" 
     android:layout_weight="3" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:padding="0dip"> 

     <EditText 
      android:layout_weight="1" 
      android:layout_height="match_parent" 
      android:scrollbars="vertical" 
      android:id="@+id/output" 
      android:layout_span="2" 
      android:maxLines="1" 
      android:lines="1" 
      android:inputType="text" 
      android:text="Real time calculation"/> 
    </TableRow> 

    <View 
     android:layout_height="2dip" 
     android:background="#FF0000" /> 

    <TableRow 
     android:id="@+id/tableRow3" 
     android:layout_weight="1" 
     android:gravity="center" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:padding="0dp" > 

     <Button 
      android:layout_width="0dp" 
      android:minHeight="0dp" 
      android:minWidth="0dp" 
      android:background="@drawable/button_custom_bg" 
      android:layout_weight="1" 
      android:layout_height="match_parent" 
      android:id="@+id/button_clear" 
      android:text="C" /> 

     <Button 
      android:layout_width="0dp" 
      android:minHeight="0dp" 
      android:minWidth="0dp" 
      android:background="@drawable/button_custom_bg" 
      android:layout_weight="1" 
      android:layout_height="match_parent" 
      android:id="@+id/button_divide" 
      android:text="/" /> 

     <Button 
      android:layout_width="0dp" 
      android:minHeight="0dp" 
      android:minWidth="0dp" 
      android:background="@drawable/button_custom_bg" 
      android:layout_weight="1" 
      android:layout_height="match_parent" 
      android:id="@+id/button_multiply" 
      android:text="*" /> 

     <Button 
      android:layout_width="0dp" 
      android:minHeight="0dp" 
      android:minWidth="0dp" 
      android:background="@drawable/button_custom_bg" 
      android:layout_weight="1" 
      android:layout_height="match_parent" 
      android:id="@+id/button_delete" 
      android:text="DEL" /> 
    </TableRow> 

</TableLayout> 

Используйте это решит вашу проблему.