Добавить прописку на вид программно
Я разрабатываю приложение Android v2.2.
У меня есть fragment .
В onCreateView(...)
моего classа fragmentа я раздуваю макет на fragment, как onCreateView(...)
ниже:
- Как установить файл APK в эмуляторе Android?
- Удаленная отладка с эмулятором Android
- Android - эмулятор в ландшафтном режиме, экран не вращается
- Эмулятор: ERROR: эмуляция x86 в настоящее время требует аппаратного ускорения
- изменить цвет фона Предпочтения
@Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.login, null); return view; }
Вышеупомянутый раздутый файл макета (login.xml):
Я хотел бы установить paddingTop
для элемента , и я хочу сделать это в коде Java вместо того, чтобы делать это в xml.
Как установить paddingTop
в в моем fragmentе кода Java classа?
- Эмулятор не работает
- Получить текущее местоположение 0 в marshmallow, где ниже 23 API его дать точное текущее местоположение с использованием плавленого местоположения
- Как определить, когда приложение Android работает в эмуляторе?
- Получить доступ root через su в эмуляторе Android
- настроить флажок
- Эмулятор Android не запускается, показывая «недопустимый параметр командной строки»,
- Что такое sharedUserId в Android и как оно используется?
- RuntimeException: невозможно создать экземпляр приложения
view.setPadding(0,padding,0,0);
Это приведет к тому, что верхнее дополнение будет дополнять -пикселями.
Если вы хотите установить его вместо dp
, вы можете сделать преобразование :
float scale = getResources().getDisplayMetrics().density; int dpAsPixels = (int) (sizeInDp*scale + 0.5f);
Чтобы ответить на ваш второй вопрос:
view.setPadding(0,padding,0,0);
как предложено SpK и Jave, будет устанавливать прописку в пикселях. Вы можете установить его в dp, вычислив значение dp следующим образом:
int paddingDp = 25; float density = context.getResources().getDisplayMetrics().density int paddingPixel = (int)(paddingDp * density); view.setPadding(0,paddingPixel,0,0);
Надеюсь, это поможет!
Если вы храните отступы в файлах ресурсов, вы можете просто позвонить
int padding = getResources().getDimensionPixelOffset(R.dimen.padding);
Он делает конверсию для вас.
Вы можете настроить прописку на ваш взгляд программно по всему ниже кода –
view.setPadding(0,1,20,3);
И, кроме того, есть различный тип прокладки –
набивка
PaddingBottom
PaddingLeft
PaddingRight
PaddingTop
Эти ссылки будут ссылаться на сайт разработчиков Android. Надеюсь, вам это поможет.
Использование TypedValue
– это гораздо более чистый способ преобразования в пиксели по сравнению с ручным вычислением:
float paddingDp = 10f; // Convert to pixels int paddingPx = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, paddingDp, context.getResources().getDisplayMetrics()); view.setPadding(paddingPx, paddingPx, paddingPx, paddingPx);
По сути, TypedValue.applyDimension
преобразует желаемое дополнение в пиксели соответствующим образом в зависимости от свойств отображения текущего устройства.
Для получения дополнительной информации см.: TypedValue.applyDimension Docs .
использовать ниже метод для динамического добавления прокладки
setPadding(int left, int top, int right, int bottom)
Пример :
view.setPadding(2,2,2,2);
Напишите следующий код, чтобы установить дополнение, это может вам помочь.
TextView ApplyPaddingTextView = (TextView)findViewById(R.id.textView1); final LayoutParams layoutparams = (RelativeLayout.LayoutParams) ApplyPaddingTextView.getLayoutParams(); layoutparams.setPadding(50,50,50,50); ApplyPaddingTextView.setLayoutParams(layoutparams);
Используйте LinearLayout.LayoutParams или RelativeLayout.LayoutParams в соответствии с родительским макетом детского просмотра
В то время как прокладка программно преобразуется в значения, связанные с плотностью, путем преобразования пикселя в Dp.
Контекст contect = MainActivity.this; TextView tview = новый TextView (контекст); tview.setPaddingRelative (10,0,0,0);