Как сделать так, чтобы размер Edittext оставался на месте? Android - PullRequest
3 голосов
/ 26 марта 2010

Мне известен атрибут, который заставляет текст «исчезать» в левой части текста редактирования для сохранения одной строки (singleLine = "true"). Но моя проблема заключается в том, что я заполняю текст редактирования до того, как отобразится представление ... в этом случае все мои тексты редактирования выходят за пределы экрана ... есть идеи? ТНХ!

Это то, что получается при заполнении пустого текста редактирования. Все остается на месте, а текст исчезает с левой стороны

Скриншот

и когда я предварительно заполню из своей базы данных

Скриншот

вот код текста редактирования:

<EditText android:id="@+id/InscripChampNom"
android:layout_height="wrap_content" android:textSize="14px"
android:inputType="textPersonName" android:layout_marginRight="20dip"
android:singleLine="true" android:textColor="@color/background"></EditText>

TableLayout определяется следующим образом:

<TableLayout android:layout_width="fill_parent"
android:stretchColumns="1" android:layout_height="fill_parent">

Я тоже пробовал с атрибутом

android:layout_width="fill_parent"

и

android:layout_width="wrap_content"

безуспешно ...

Может быть, существует конфликт между типом ввода и однострочным?

РЕДАКТИРОВАТЬ Вот полный код моей проблемы:

<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:scrollbars="vertical" android:background="@color/backgroundzen"
android:layout_gravity="fill" android:layout_height="fill_parent"
android:layout_width="fill_parent" android:paddingLeft="6dip"
android:paddingRight="6dip">
<TableLayout style="@style/LayoutWhiteBgrdFillWrap"
    android:paddingLeft="6dip" android:paddingRight="6dip"
    android:stretchColumns="1">
    <TextView android:id="@+id/NomFormationConference" style="@style/textViewTitleRedzenBold"
        android:text="Nom conférence"></TextView>
    <TableRow android:layout_margin="2dip">
        <TextView android:id="@+id/DateSession" android:textColor="@color/textezenrouge"
            android:layout_height="wrap_content" android:layout_width="wrap_content"
            android:text="date début"></TextView>
        <TextView android:id="@+id/speakerConf" android:textColor="@color/textezenrouge"
            android:layout_height="wrap_content" android:layout_width="wrap_content"
            android:text="speaker"></TextView>
    </TableRow>
    <TableRow android:layout_margin="2dip">
        <TextView android:id="@+id/InscripNom" android:layout_width="wrap_content"
            android:textColor="@color/background" android:layout_height="wrap_content"
            android:text="@string/nom" android:textStyle="bold"></TextView>
        <EditText android:id="@+id/InscripChampNom"
            android:layout_height="wrap_content" android:textSize="14sp"
            android:layout_width="fill_parent" android:inputType="textPersonName"
            android:layout_marginRight="20dip" android:hint="@string/nomh"
            android:singleLine="true" android:textColor="@color/background"></EditText>
    </TableRow>

// Последняя табличная строка повторяется 5 раз с различными данными внутри.

Стиль такой:

<style name="LayoutWhiteBgrdFillWrap">
    <item name="android:background">@color/backgroundzen</item>
    <item name="android:layout_width">fill_parent</item>
    <item name="android:layout_height">fill_parent</item>
</style>

А вот как я заполняю EditText:

misc = SQLiteDatabase.openDatabase("/data/data/com.mobile.zen/databases/" + Constants.UNVERSIONNED_DATABASE, null,
            SQLiteDatabase.OPEN_READONLY);
    Cursor c = misc.query("MISC", null, null, null, null, null, null);
    if (c.moveToFirst()) {
        do {
            nomInscrit.setText(c.getString(1));
        } while (c.moveToNext());
    }
    c.close();
    misc.close();

Ответы [ 6 ]

5 голосов
/ 13 августа 2010

Попробуйте добавить android:shrinkColumns="1" к вашему TableLayout, чтобы сказать ему, что он может заставить элементы EditText быть меньше, чтобы соответствовать ширине экрана.

0 голосов
/ 18 мая 2011
<EditText 
    android:id="@+id/InscripChampNom"
    android:layout_height="wrap_content" 
    android:textSize="14px" 
    android:inputType="none" 
    android:layout_marginRight="20dip" 
    android:singleLine="true" 
    android:textColor="@color/background" 
    android:editable="false"
    android:ellipsize="end">
</EditText>
0 голосов
/ 15 мая 2011

я не думаю, что tablelayout работает в scrollview. у меня была установка как таковая, и она не выбрасывает ошибки но эмулятор просто не загружает приложение и говорит, что перестал работать. я удалил скроллвью и все заработало.

я думаю, проблема в том, что у tablelayout есть свои полосы прокрутки для этого не требуется прокрутка и, возможно, два конфликта.

0 голосов
/ 16 августа 2010

Может быть возможной ошибкой в ​​Android. Но один из способов решения этой проблемы может состоять в том, чтобы указать какое-либо значение в качестве ширины поля «Редактировать текст» и указать

Android: stretchColumns = "1"

   <?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:scrollbars="vertical" android:background="#ffffff"
android:layout_gravity="fill" android:layout_height="fill_parent"
android:layout_width="fill_parent" android:paddingLeft="6dip">
  <TableLayout android:layout_below="@+id/reltable1" android:id="@+id/tablelayout_main" android:layout_width="fill_parent" android:layout_marginRight="10dip" android:layout_marginBottom="10dip" android:layout_height="fill_parent" android:layout_centerInParent="true" android:gravity="center" android:stretchColumns="1">
    <TextView android:id="@+id/NomFormationConference" 
        android:text="Nom conférence"></TextView>
    <TableRow android:layout_height="wrap_content" android:layout_width="fill_parent">
        <TextView android:id="@+id/DateSession"
            android:layout_height="wrap_content" android:layout_width="wrap_content"
            android:text="date début"></TextView>
        <TextView android:id="@+id/speakerConf" 
            android:layout_height="wrap_content" android:layout_width="wrap_content"
            android:text="speaker"></TextView>
    </TableRow>
      <TableRow android:layout_height="wrap_content" android:layout_width="fill_parent">
        <TextView android:id="@+id/InscripNom" android:layout_width="wrap_content"
           android:layout_height="wrap_content"
            android:text="nom" android:textStyle="bold"></TextView>
        <EditText android:id="@+id/InscripChampNom"
            android:textSize="14sp"
            android:inputType="textPersonName"
            android:hint="nomh" android:text="dsfdsfdsfsdfsdfsssssssssssssssssssssssssssssss" android:layout_height="wrap_content" android:fitsSystemWindows="true" android:layout_width="220dip" android:ellipsize="end"></EditText>
    </TableRow>
</TableLayout>
</ScrollView>

Я также добавил свойство высоты и ширины для TableRow

0 голосов
/ 13 августа 2010

Я просто пытался воспроизвести вашу проблему, но не смог.

Проверьте это:

<?xml version="1.0" encoding="utf-8"?>

<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent" android:stretchColumns="1"
    android:layout_height="fill_parent">

    <EditText android:id="@+id/a" android:layout_height="wrap_content"
        android:textSize="14px" android:inputType="textPersonName"
        android:layout_marginRight="20dip" android:singleLine="true"
        android:textColor="@android:color/black"></EditText>

    <EditText android:id="@+id/b" android:layout_height="wrap_content"
        android:textSize="14px" android:inputType="textPersonName"
        android:layout_marginRight="20dip" android:singleLine="true"
        android:textColor="@android:color/black"></EditText>

    <EditText android:id="@+id/c" android:layout_height="wrap_content"
        android:textSize="14px" android:inputType="textPersonName"
        android:layout_marginRight="20dip" android:singleLine="true"
        android:textColor="@android:color/black"></EditText>

</TableLayout>
0 голосов
/ 26 марта 2010

У вас нет атрибута android:layout_width на вашем EditText. Добавьте одно или иным образом ограничьте длину поля (например, если оно в RelativeLayout, используйте android:layout_alignParentRight="true").

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...