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

Я разрабатываю приложение 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 вместо того, чтобы делать это в xml.

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

Ответ 1

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

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

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

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

Ответ 2

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

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

как предложено SpK и Jave, будет задано заполнение в пикселях. Вы можете установить его в dp, вычислив значение dp следующим образом:

int paddingPixel = 25;
float density = context.getResources().getDisplayMetrics().density
int paddingDp = (int)(paddingPixel * density);
view.setPadding(0,paddingDp,0,0);

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

Ответ 3

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

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

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

Ответ 4

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

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

А также доступны разные типы прокладок -

Padding

PaddingBottom

PaddingLeft

PaddingRight

PaddingTop

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

Ответ 5

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

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

Пример:

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

Ответ 6

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

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

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

Ответ 8

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