2015-01-17 4 views
1

в ниже размещенном макете, editText всегда исправлен до конца, даже если я ограничу его ширину, чтобы быть чем-то вроде 30dp. Я хочу, чтобы он не растягивался до конца, как можно я делаю такКак ограничить ширину editText

* XML код:

<?xml version="1.0" encoding="utf-8"?> 
<TableLayout 
xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="wrap_content" 
android:orientation="vertical"> 
<TableRow 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_gravity="top|left" 
    android:orientation="horizontal"> 
    <ImageView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_gravity="left|center_vertical" 
     android:src="@android:drawable/alert_light_frame"/> 
    <TextView 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:gravity="center_horizontal|center_vertical" 
     android:text="roll: "/> 
    <EditText 
     android:layout_width="30dp" 
     android:layout_height="wrap_content" 
     android:gravity="start" 
     android:hint="E" 
     android:ems="6"/> 
</TableRow> 
+1

Да .. его рабочий. Я имею в виду, что ширина фиксируется до 30dp. Только его strectch в высоту, как вы указали андроид: layout_height = "wrap_content". В чем проблема? –

ответ

0

Используйте android:maxWidth атрибут:

<EditText 
    android:layout_width="30dp" 
    android:layout_height="wrap_content" 
    android:gravity="start" 
    android:hint="E" 
    android:ems="6" 
    android:maxWidth="30dp"/> 
+0

Я попробовал ответить, но edittext охватывает от конца текстового просмотра до конца экрана? – rmaik

0

Всегда используйте wrap_content вместо любого значения внутри Edittext, Textview и т. Д. И пытайтесь использовать «sp» вместо dp. Попробуйте ниже код:

<EditText 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:gravity="start" 
    android:hint="E" 
    android:ems="6" /> 

Никогда не определить строку таблицы внутри таблицы макета в формате XML, Более предпочтительный метод для создания строк динамически, как показано ниже, попробуйте ниже код.

TableLayout tl; 
tl = (TableLayout) findViewById(R.id.mainTable) 
tr = new TableRow(this); 

label = new TextView(this); 
label.setText("GFD"); 
label.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT)); 
label.setPadding(5, 5, 5, 5); 
label.setBackgroundColor(Color.parseColor("#FF1493")); 
LinearLayout Ll = new LinearLayout(this); 
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.WRAP_CONTENT); 
params.setMargins(5, 5, 5, 5); 
Ll.addView(label,params); 
tr.addView((View)Ll); 

tl.addView(tr, new TableLayout.LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.WRAP_CONTENT)); 
+0

по-прежнему та же проблема, что edittext охватывает от конца текстового поля до конца экрана – rmaik

+0

«Более предпочтительный метод - создавать строки динамически, как показано ниже». - На самом деле здравый смысл не смешивать взгляды и логику. Таким образом, вы найдете нужный вам материал в нужном месте. На самом деле это парадигма программирования под названием MVC: http://de.wikipedia.org/wiki/Model_View_Controller. –

0

Попробуйте использовать wrap_content для TableLayout с или TableRow сек Ширина:

<TableLayout 
xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:orientation="vertical"> 

    <TableRow 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_gravity="top|left" 
    android:orientation="horizontal"> 
+0

Я тоже попробовал ваш ответ, без изменений – rmaik

Смежные вопросы