Динамическое добавление Textview

В файле макета у меня есть следующее:

android:layout_width="100dp" android:layout_height="wrap_content" android:layout_marginRight="10dp" android:text="SYN" android:textAppearance="?android:attr/textAppearanceMedium" android:background="@drawable/rectanglepurple" android:textColor="#000000" android:gravity="right"/> 

Я пытаюсь выполнить следующий код и до сих пор имею:

 Resources res = getResources(); Drawable drawable1=res.getDrawable(R.drawable.rectanglepurple); TextView idText = new TextView(getActivity()); idText.setText("SYN"); idText.setTextAppearance(getActivity(), android.R.style.TextAppearance_Medium); idText.setTextColor(Color.BLACK); idText.setGravity(Gravity.RIGHT); idText.setBackgroundDrawable(drawable1); 

Я не могу тренироваться, как бороться с

  android:layout_width="100dp" android:layout_height="wrap_content" android:layout_marginRight="10dp" 

Любая помощь оценивается.

Это интересная часть макетов Android. Свойства XML с префиксом layout_ на самом деле предназначены для содержащего диспетчера представлений (например, LinearLayout или RelativeLayout). Поэтому вам нужно добавить что-то вроде этого:

 //convert from pixels (accepted by LayoutParams) to dp int px = convertDpToPixel(100, this); LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(px, LinearLayout.LayoutParams.WRAP_CONTENT); //convert from pixels (taken by LayoutParams.rightMargin) to dp px = convertDpToPixel(10, this); params.rightMargin = px; idText.setLayoutParams(params); 

И convertDpToPixel (бессовестно адаптированный (изменение для возврата int вместо float) от преобразования пикселей в dp ):

 /** * This method converts dp unit to equivalent device specific value in pixels. * * @param dp A value in dp(Device independent pixels) unit. Which we need to convert into pixels * @param context Context to get resources and device specific display metrics * @return An integer value to represent Pixels equivalent to dp according to device */ public static int convertDpToPixel(float dp, Context context) { Resources resources = context.getResources(); DisplayMetrics metrics = resources.getDisplayMetrics(); int px = (int) (dp * (metrics.densityDpi / 160f)); return px; } 

EDIT: изменил назначение на rightMargin с 10 (количество пикселей) на переменную px (содержащую количество пикселей в 10dp).

Возможно, вам стоит взглянуть на

  setLayoutParams() 

Метод класса TextView. – андроидный документ

Intereting Posts
Android: невозможно установить выпуск на эмулятор; Получение отказа Как создать бесконечный круглый ViewPager с изображениями (круговой способ) Получить изображение с камеры в ImageView Android No postgresql имя пользователя, указанное в пакете запуска Не нашел класс по пути: DexPathList? Будет ли таймер на Android планировать выполнять каждую вторую работу во время прыжка? Поставщик контактов Android получает только телефонные контакты со всеми электронными письмами Как импортировать проект в репозиторий bitbucket из Android Studio? Что такое полный класс базы данных Android для существующей базы данных SQLite? Проблемы с Android Studio с момента последнего обновления до версии 0.8 Как создать линейную компоновку справа налево Двухсторонний адаптер синхронизации в Android OnQueryTextChange запускается после возобновления приложения Что происходит на системном уровне при входящем звонке? Google TV SDK для Android