Android EditText в TableLayout запускается - PullRequest
4 голосов
/ 08 февраля 2012

У меня есть простой знак в tablelayout, но содержимое внутри слишком далеко вправо. Все кажется мне центрированным. Или кажется, что EditText пытается центрироваться внутри основного родителя, а не в родительской таблице IT. Есть идеи почему?

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

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/bluebg"
android:id="@+id/loading_page_lin_layout"
>
 <TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@drawable/roundtable"
        android:layout_gravity="center"
        android:gravity="center"
        android:layout_margin="10dip"
        android:padding="10dip"
        android:stretchColumns="*">
        <TableRow>
            <EditText  
            android:id="@+id/txtUserName"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:textColor="#85AFBE"                              
            android:hint="Email"
            android:text=""
            android:gravity="left"

            />
         </TableRow>
        <TableRow>
            <EditText  
                android:id="@+id/txtPassword"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:textColor="#85AFBE"                              
                android:text=""
                android:hint="Password"
                android:password="true"
                android:gravity="left"  
                android:layout_gravity="center"                     
                />
        </TableRow>
        <TableRow>
            <!--  <Button
            android:id="@+id/btnSignIn"
            android:text="Sign In" 
            android:layout_width="fill_parent"
            android:paddingTop="10dip"
            android:gravity="center"
            />-->
            <ImageButton 
             android:id="@+id/btnSignIn"
             android:src="@drawable/signbig"    
             android:scaleType="fitCenter"   
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"                
             android:adjustViewBounds="true"
             android:layout_marginLeft="3dip"
             android:background="@null"
             android:layout_marginRight="3dip"
             android:layout_gravity="center"
             />
        </TableRow>
        <TableRow>
            <Button
            android:id="@+id/btnSignUp"
            android:background="@null"
            android:text="Sign Up" 
            android:textStyle=""
            android:layout_width="wrap_content"
            android:paddingTop="10dip"
            android:textSize="20dip"
            android:gravity="center"
            android:onClick="SendToSignUp"
            />                          
        </TableRow> 
        <TableRow>
            <Button
               android:id="@+id/btnFillData"
               android:text="Fill Fake Data" 
               android:background="@null"
               android:layout_width="wrap_content"
               android:layout_height="wrap_content"
               android:paddingTop="10dip"
               android:gravity="center"
               android:onClick="FillFakeData"
               />
           </TableRow>
</TableLayout>
</LinearLayout>

signin screen shot

Ответы [ 5 ]

14 голосов
/ 12 июня 2013

У меня была такая же проблема с таблицей из двух столбцов.Мой текст во втором столбце был отрезан от экрана.Исправлено с помощью android:shrinkColumns="1" в моем TableLayout.

Вот мой код, text3 был слишком большим и обрезался на экране, пока я не добавил атрибут shrinkColumns в свой TableLayout.

<TableLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:shrinkColumns="1" >

        <TableRow
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" 
            >

            <TextView
                android:id="@+id/text1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginRight="10dp" />

            <TextView
                android:id="@+id/text2"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content" />
        </TableRow>

        <TableRow
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" >

            <TextView
                android:id="@+id/text3"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_column="1" />
        </TableRow>
    </TableLayout>
10 голосов
/ 08 февраля 2012

Ширина вашего макета таблицы установлена ​​на "wrap_content", а у его дочерних элементов - "fill_parent", никто из них ничего точно не знает :) Установите ширину макета таблицы на "fill_parent", и все должно располагаться так, как вы имеете в виду это к.

UPD Я вижу только одну колонку в вашей таблице. Это означает, что вы можете смело заменять его вертикальным LinearLayout.

2 голосов
/ 29 сентября 2013

У меня была такая же проблема, и ни одно из учебных пособий в сети не было полезным. В конце концов, я обнаружил, что установка свойства «Сжать столбцы» в табличном представлении сработает.

0 голосов
/ 29 сентября 2015

Настройка EditTextView layout_width = "0dp" и layout_weight = "1" решила мою проблему.

0 голосов
/ 23 января 2015

Установите и shrinkColumn, и stretchColumn для столбца запуска без редактирования. Это дает вам родительскую ширину соответствия и не убегает.

...