2015-08-17 3 views
0

У меня возникли проблемы с добавлением linearlayout к другому linearlayout внутри frameelayout. Линейный выход с кнопкой вообще не отображается. Я понимаю, что в фреймэйтете дочерние элементы стекаются друг за другом, но я добавляю его в linearlayout, поэтому не должен ли он просто отображаться под списком?Добавление LinearLayout к linearlayout в FrameLayout

Спасибо за помощь

Вот XML-макета.

<?xml version="1.0" encoding="utf-8"?> 

<FrameLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/dragTopView" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    dtlOpen="false"> 

    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:gravity="center" 
     android:orientation="vertical"> 

     <TextView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:textStyle="bold" 
      android:textSize="20sp" /> 

     <LinearLayout 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:gravity="center"> 

      <EditText 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:ems="10" 
       android:padding="10dip" /> 

      <ImageView 
       android:id="@+id/quick_icon" 
       android:layout_width="35dip" 
       android:layout_height="35dip" 
       android:scaleType="centerCrop" /> 
     </LinearLayout> 
    </LinearLayout> 

    <LinearLayout 
     android:id="@+id/contacts" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content"> 
     <ListView 
      android:id="@+id/contactsListView" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:orientation="vertical" 
      android:dividerHeight="1dip" > 
     </ListView> 
    </LinearLayout> 
</FrameLayout> 

Это, как я добавить вид программно,

LinearLayout layout = (LinearLayout) rootView.findViewById(R.id.contacts); 
LinearLayout lin = helpers.getInterfaceHelper().createDynamicButton(); 
layout.addView(lin); 

Это функция createDynamicButton

public LinearLayout createDynamicButton() { 
    final float scale = context.getResources().getDisplayMetrics().density; 
    LinearLayout llayout = new LinearLayout(context); 
    llayout.setId(1); 
    int padding_10 = (int)(10 * scale + 0.5f); 
    int padding_5 = (int)(5 * scale + 0.5f); 
    llayout.setPadding(padding_10, padding_10, padding_10, 0); 
    llayout.setGravity(Gravity.CENTER_HORIZONTAL); 
    LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT); 
    llayout.setLayoutParams(params); 
    Button button = new Button(context); 
    button.setId(2); 
    button.setTextColor(Color.WHITE); 
    button.setTypeface(null, Typeface.BOLD); 
    button.setTextSize(TypedValue.COMPLEX_UNIT_SP, 20); 
    int padding_15 = (int)(15 * scale + 0.5f); 
    button.setPadding(padding_15, padding_15, padding_15, padding_15); 
    button.setBackgroundResource(R.drawable.custom_btn); 
    button.setGravity(Gravity.CENTER_HORIZONTAL); 
    button.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT)); 
    llayout.addView(button); 
    return llayout; 
} 

ответ

0

FrameLayout предназначен только показать один родительский вид в нем. Замените его LinearLayout, как показано ниже, и проверьте его.

<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/dragTopView" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical"> 

    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:gravity="center" 
     android:orientation="vertical"> 

     <TextView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:textStyle="bold" 
      android:textSize="20sp" /> 

     <LinearLayout 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:gravity="center"> 

      <EditText 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:ems="10" 
       android:padding="10dip" /> 

      <ImageView 
       android:id="@+id/quick_icon" 
       android:layout_width="35dip" 
       android:layout_height="35dip" 
       android:scaleType="centerCrop" /> 
     </LinearLayout> 
    </LinearLayout> 

    <LinearLayout 
     android:id="@+id/contacts" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content"> 
     <ListView 
      android:id="@+id/contactsListView" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:orientation="vertical" 
      android:dividerHeight="1dip" > 
     </ListView> 
    </LinearLayout> 
</LinearLayout> 

Если вы хотите, чтобы сложить свои взгляды, замените ваш LinearLayout с RelativeLayout и редактировать высоту и ширину взглядов, которые вы хотите. RelativeLayout позволяет вам складывать представления.

+0

Он хочет уложить его вверх – Sheychan

0

FrameLayout не складывает его, он просто показывает 1 вид .. в вашем случае это LinearLayout.

RelativeLayout без дальнейших деклараций складывать его. Просто сопоставьте высоту и ширину Relative layout.

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