2013-09-17 4 views
0

Я хотел бы сделать эту вертикальную линию программноКак добавить вид программно

<View 
    android:layout_width="fill_parent" 
    android:layout_height="1dp" 
    android:background="@android:color/darker_gray"/> 

Это, как я создаю вид:

View view = new View(getActivity()); 

Как я могу добавить ширину, высоту и фоновые параметры ?

+0

Вы можете надуть вид, а затем добавить его к родителю. Также вы можете установить параметры с помощью LayoutParams. – Anukool

+0

да, но как каждый раз, когда я пытаюсь использовать LayoutParams, я получаю сообщение об отказе – Waqleh

+1

Попробуйте использовать match_parent вместо fill_parent. Может быть, из-за fill_parent вы получаете сообщение об отмене, – Anukool

ответ

3

Попробуйте

View v = new View(activityContext); 
v.setLayoutParams(new TableRow.LayoutParams(LayoutParams.FILL_PARENT), GetPixel(1, activityContext)); 
v.setBackgroundColor(getResources().getColor(android.R.color.darker_gray)); 

и

// To convert pixels to dp units 
public int GetPixel(float f , Context context) 
    { 
     DisplayMetrics displayMetrics = context.getResources().getDisplayMetrics(); 
     return (int)((f * displayMetrics.density) + 0.5f); 
    } 
+0

Ваш метод называется GetPixel (подразумевая, что вход - dp, а выход - dp), но в вашем комментарии говорится, что вход - пиксели, а выход - dp. –

0

Вот пример:

View mView = new View(mContext); 
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); 
params.addRule(RelativeLayout.ALIGN_PARENT_LEFT, RelativeLayout.TRUE); 
mView.setBackgroundResource(android.R.color.black); 
mRelativeLayout.addView(mView, params); 
1

вы также можете использовать это:

View mView = new View(Context); 
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT); 
myLInearLayout.setOrientation(LinearLayout.VERTICAL); 
mView .setLayoutParams(params); 
mView.setBackgroundResource(android.R.color.white); 
myLInearLayout.addView(mView); 
0

Позвольте мне объяснить это на примере.

Вот xml-файл, содержащий LinearLayout.

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/ll" android:gravity="center" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:orientation="vertical" > 

</LinearLayout> 

Ваш JAVA-файл.

@Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.second); 
     float dpi = 0; 
     LinearLayout ll = (LinearLayout) findViewById(R.id.ll); 

     DisplayMetrics dm = new DisplayMetrics(); 
     getWindowManager().getDefaultDisplay().getMetrics(dm); 

     dpi = (float) (dm.densityDpi/160.0); 

     LinearLayout linear = new LinearLayout(
       StackOverflowAnswerDemoActivity.this); 
     LayoutParams params = new LayoutParams(LayoutParams.FILL_PARENT, 
       (int) (1 * dpi)); 
     linear.setBackgroundColor(Color.WHITE); 
     linear.setLayoutParams(params); 
     ll.addView(linear); 
} 

enter image description here

0

Самый лучший вариант, если у вас уже есть файл XML не вносить изменения в код, но использовать LayoutInflater

Смежные вопросы