2014-09-01 4 views
1

Мне нужно ограничить один EditText в 1 строке, только если EditText имеет фокус, но он ничего не делает, когда он имеет фокус, только если он имеет фокус, и я закрываю приложение работает. Я не знаю, почему это происходит, и я пытаюсь решить его, но не могу. Это мой код:Создать editText со свойством singleLine = true программно

if(myText.isFocused()){ 
     myText.setSingleLine(true); 
     myText.setMaxLines(1); 
     myText.setLines(1); 
} 

Отредактировано: После ОБСУЖДЕНИЕ, вот что я понял:

когда свойство EditText ставится в OnCreate методе Активность перерывов.

Главный объект: create editText со свойством singleLine = true программно.

ответ

2

Попробуйте установить onFocusChangeListener на свой адрес.

myText.setOnFocusChangeListener(new OnFocusChangeListener() { 

    @Override 
    public void onFocusChange(View v, boolean hasFocus) { 
     // TODO Auto-generated method stub 
     if(hasFocus){ 
      myText.setSingleLine(true); 
      myText.setMaxLines(1); 
      myText.setLines(1); 
     } 
    } 
}); 

Ваш код не будет прослушивать все изменения фокуса. Он просто проверит его один раз. Надеюсь это поможет.

Для поддержания EditText SingleLine независимо от фокуса положить это в onCreate после setContentView:

myText = (EditText) findViewById(R.id.ed); 
myText.setSingleLine(true); 
+0

I попробуйте его раньше, и это не сработает, потому что если я нажму на клавишу ввода, он добавит одну строку и будет работать, когда я закрою приложение. – temerariomalaga

+0

@temerariomalaga см. Отредактированный ответ. –

0

EDITED

Добавьте параметр ID андроид: идентификатор = "@ + идентификатор/first_layout" для xml макет:

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

then i п OnCreate или где-нибудь:

public class Test extends Activity { 

private RelativeLayout mRlayout; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 

     super.onCreate(savedInstanceState); 
     setContentView(R.layout.first_layout); 

     mRlayout = (RelativeLayout) findViewById(R.id.first_layout); // use the id here 

     EditText myEditText = getEditText(); 

     mRlayout.addView(myEditText); 


    } 

    private EditText getEditText(){ 

     EditText lEditText= new EditText(Test.this); // Pass it an Activity or Context 
     lEditText.setLayoutParams(new RelativeLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT)); 
     lEditText.setSingleLine(true); 
     return lEditText; 

    } 
} 

когда вы хотите создать EditText, вызовите getEditText(), условии, что вы также определить все другие необходимые свойства для EditText

+0

Я создал edittext в действии, а не в файле макета. – temerariomalaga

+0

@temerariomalaga, вы должны были упомянуть об этом в своем вопросе. Затем попробуйте тот, на который ответил ** Дхрути **. – OnePunchMan

+0

Я пробовал, и у меня такая же проблема. – temerariomalaga

0
<EditText 
      android:id="@+id/edt_email" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:maxLength="Enter Your text limit like 10" 
      android:padding="8dp" 
      android:singleLine="true" 
      android:textSize="15dp" /> 
Смежные вопросы