2013-04-01 2 views
0

Я создал текстовый файл программно. Теперь мне нужно назначить стиль этому текстовому виду программно. (Не только TextAppearance, но и поля слева, дополнение и т. Д.). Все эти атрибуты стиля определены в XML-файле.Как применить стиль к текстовому виду программно

TextView tv = new TextView(this); 

ответ

0

Настройка прокладки очень проста. Но разница немного сложная. Посмотрите ниже.

TextView tv = new TextView(this); 
//setting padding left top right bottom 
tv.setPadding(10, 10, 10, 10); 
//setting left margin 
LinearLayout.LayoutParams llp = new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); 
llp.setMargins(50, 0, 0, 0); // llp.setMargins(left, top, right, bottom); 
tv.setLayoutParams(llp); 
0
LinearLayout.LayoutParams llp = new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); 
    tv.setLayoutParams(params); 
    tv.setPadding(left, top, right, bottom); 
    left- padding to left 
    top - padding to right 
    right -padding to right 
    bottom -padding to bottom 

Для получения дополнительной укладки проверить ссылку ниже. См. Методы настройки. Вы можете установить размер текста, цвет фона и многое другое.

http://developer.android.com/reference/android/widget/TextView.html.

0

Используйте параметры макета для установки этих атрибутов.

TextView t = new TextView(this); 
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(heightInPixels, widthInPixel); 
params.setMargins(left, top, right, bot); 
t.setLayoutParams(params); 
mLinearLayout.addView(t); 

EDIT:

Если у вас есть свой стиль, в состоянии определить в attrs.xml файле, то вы должны сделать свой собственный TextView и в конструкторе ручки атрибутов вы хотите. Он предназначен для обработки атрибутов из XML. И для определения java вам нужно сделать «set method».

public class MyTextView extends TextView 
{ 
    String _stringValue; 

    public MyTextView(Context c) 
    { 
     this(c, null); 
    } 

    public MyTextView(Context c, AttributeSet attrs) 
    { 
     this(c, attrs, 0); 
    } 

    public MyTextView(Context c, AttributeSet attrs, int defStyle) 
    { 
      super(c, attrs, defStyle); 
     TypedArray a = c.obtainStyledAttributes(attrs, R.styleable.MyStyleAble); 
     _stringValue = a.getString(R.styleable.MyStyleAble_stringValue); 
     a.recycle(); //don't forget this line! 
    } 

    public void setStringValue(String s) 
    { 
     _stringValue = s; 
    } 
} 

EDIT

А вот использование MyTextView в коде. Просто создайте его, используя стандартный конструктор.

MyTextView t = new MyTextView(context); 

Затем задайте свои значения, соответствующие стилю. В моем примере это значение String.

t.setStringValue("My string text"); 

Тогда используйте макетParams.

t.setLayoutParams(params); 

И добавьте новый созданный TextView в макет. Например, LinearLayout.

mLinearLayout.addView(t); 

Я забыл сказать, что вы должны определить стиль-состоянии Int attrs.xml только если вам необходимо установить свои атрибуты в файле XML. Тогда вы используете его вот так.

<my.package.name.MyTextView 
    xmlns:custom="http://schemas.android.com/apk/res/my.package.name" 
    custom:stringValue="some string text" 
    //and also you can use standart android:... attributes 
/> 
+0

Спасибо за ответ, Но моя проблема в том, у меня есть стиль, определенный в attr.XML <объявить-styleable имя = "ClassicWidget"> <атр имя = формат "label1" = "строка" /> <атр имя = "label1_style" формат = "ссылка" /> <атр name = "label2" format = "string" /> Он может включать в себя поля, отступы и другие предметы стиля Мне нужно применить эти стили к текстовому окну – user1746619

+0

@ user1746619 ОК. можете ли вы опубликовать несколько примеров. Я не уверен, понимаю ли я, что вы хотите делать. – WELLCZECH

+0

@ user1746619 Ответ обновлен. Надеюсь, это то, что вы хотите сделать, и это было полезно для вас. – WELLCZECH

0

Используйте layoutParams для установки поля для динамического созданного textView.

TextView view1 = new TextView(this); 

view1.setGravity(Gravity.RIGHT | Gravity.CENTER); 

RelativeLayout.LayoutParams rlp = new RelativeLayout.LayoutParams(

         RelativeLayout.LayoutParams.WRAP_CONTENT, 

         RelativeLayout.LayoutParams.WRAP_CONTENT); 

rlp.setMargins(10,10, 0, 0); 
view1.setLayoutParams(rlp); 
0

стиля шрифта: textview.setTypeface(Typeface.DEFAULT_BOLD);

для левых краев и дополнения, которые необходимо определить «макет Params» как

TextView tv = new TextView(this); 
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(heightInPixels, widthInPixel); 
tv.setLayoutParams(params); 
tv.setMargins(10, 10, 10, 10); 
yourLayout.addView(tv); 
tv.setPadding(10, 10, 10, 10); 
Смежные вопросы