Добавить заполнение на вид программно



Я deveoping Android v2. 2 приложение.



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



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



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

return view;
}


выше завышенный файл макета (вход.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 to <LinearLayout> в моем фрагменте кода Java-класс ??

659   9  

9 ответов:

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

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

если вы хотите установить его в 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);

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

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

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.

Context contect=MainActivity.это; TextView tview=новый TextView (контекст); tview.setPaddingRelative(10,0,0,0);

Comments

    Ничего не найдено.