it-swarm.com.ru

Добавить отступы для просмотра программно

Я разрабатываю приложение Android v2.2. 

У меня есть фрагмент .

В обратном вызове onCreateView(...) моего класса фрагмента я раздуваю компоновку фрагмента, как показано ниже:

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.login, null);

    return view;
}

Приведенный выше разметочный файл (login.xml):

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:layout_width="fill_parent"
    Android:layout_height="fill_parent"
    Android:orientation="vertical" 
 >

    <TextView
        Android:layout_width="fill_parent"
        Android:layout_height="wrap_content"
        Android:text="Username" />


    <TextView
        Android:layout_width="fill_parent"
        Android:layout_height="wrap_content"
        Android:text="Username" />

</LinearLayout>

Я хотел бы установить paddingTop для указанного выше элемента <LinearLayout>, и я хочу сделать это в Java code вместо того, чтобы делать это в xml.

Как установить paddingTop в <LinearLayout> в моем фрагменте кода класса Java ??

193
Leem.fin

view.setPadding(0,padding,0,0);

Это установит верхний отступ на padding- пикселей. 

Если вы хотите установить его вместо dp, вы можете сделать преобразование :

float scale = getResources().getDisplayMetrics().density;
int dpAsPixels = (int) (sizeInDp*scale + 0.5f);
433
Jave

Чтобы ответить на ваш второй вопрос:

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);

Надеюсь, это поможет!

86
Chris Conway

Если вы храните заполнение в файлах ресурсов, вы можете просто позвонить

    int padding = getResources().getDimensionPixelOffset(R.dimen.padding);

Это делает преобразование для вас.

79
Miklos Jakab

Вы можете установить отступы на ваш взгляд, запрограммировав весь код ниже - 

view.setPadding(0,1,20,3);

И, также, есть различные типы доступных прокладок - 

Обивка

PaddingBottom

PaddingLeft

PaddingRight

PaddingTop

Эти ссылки будут ссылаться на сайт разработчиков Android. Надеюсь, это вам очень поможет.

12
Praveenkumar

Использование 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 .

7
i2097i

используйте метод ниже для динамического задания заполнения 

setPadding(int left, int top, int right, int bottom)

Пример :

view.setPadding(2,2,2,2);
6
saigopi

Используя Kotlin и библиотеку Android-ktx, вы можете просто 

view.updatePadding(top = 42)

Смотрите документы здесь

4
Andrew Orobator

Напишите следующий код, чтобы установить отступы, это может помочь вам.

  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 в соответствии с родительским макетом дочернего представления.

3
Manikandan K

При программном заполнении преобразуйте значения, связанные с плотностью, путем преобразования пикселя в Dp.

1
Bhagya

Context context = MainActivity.this; TextView tview = new TextView (context); tview.setPaddingRelative (10,0,0,0);

0
Siddhartha Halder