2015-01-07 4 views
2

У меня есть фрагмент диалога, который имеет один EditText, определенный в его макете, и ряд других EditTexts, добавленных программно (потому что их число может меняться). Моя проблема в том, что тот, который определен в xml, имеет стиль платформы по умолчанию - например. синий под ним - тогда как программно добавленные, похоже, не имеют стиля. См. Снимок экрана для справки.Программно добавленный стиль EditText отсутствует

Как можно создать EditText программно, сохраняя стиль по умолчанию?

Как создать EditTexts:

EditText et = new EditText(this.getActivity()); 
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT); 
params.topMargin = 10; 

et.setText("whatever"); 
et.setLayoutParams(params); 

mContainer.addView(et); 

enter image description here

ответ

3

Сначала нужно создать XML-ресурс в папке Layout, как показано ниже:

<?xml version="1.0" encoding="utf-8"?> 
<TextView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:text="This is a template" 
    style="@style/my_style" /> 

А затем раздуть его, как показано ниже в коде:

TextView myText = (TextView)getLayoutInflater().inflate(R.layout.tvtemplate, null); 

Надеюсь, что это сработает.

+0

Спасибо. раздувание XML с помощью набора стилей. Я просто использовал стиль = "@ android: style/Widget.EditText". – aaronmarino

0

Используйте следующий фрагмент кода

Drawable drawable = editText.getBackground(); 
int sdk = android.os.Build.VERSION.SDK_INT; 
int osVersion = android.os.Build.VERSION_CODES.JELLY_BEAN; 
if(sdk < osVersion) { 
    editText.setBackgroundDrawable(originalDrawable); 
} else { 
    editText.setBackground(originalDrawable); 
} 
+0

Это будет работать только на фоне. Я хочу, чтобы другие элементы стиля также соответствовали друг другу. – aaronmarino

1

Используйте следующий фрагмент кода.

EditText et = new AppCompatEditText(this.getActivity()); 
Смежные вопросы