-1

我正在做一个应用程序,将使用二次公式执行二次计算。为了显示解决方程的步骤,我将ListView作为ListView项目。但是,为了在ListView中显示方程行,我创建的自定义布局在运行应用程序时完全搞砸了。Android - 自定义布局越来越乱搞ListView

这是它应该是什么样子: layout

和,这里就是它实际上看起来像: device screen

我想不出有什么不对,我尝试了每一种可能的解决方案在互联网上找到。

这里是我的自定义布局的XML代码:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 


<ImageView 
    android:layout_width="match_parent" 
    android:layout_height="1.5dp" 
    android:id="@+id/imageView2" 
    android:src="@drawable/line" 
    android:paddingLeft="50dp" 
    android:paddingRight="50dp" 
    android:layout_centerInParent="true" /> 

<TextView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:textAppearance="?android:attr/textAppearanceSmall" 
    android:text="or," 
    android:id="@+id/textView4" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentStart="true" 
    android:textSize="20sp" 
    android:paddingLeft="5dp" 
    android:textColor="#FFFFFF" 
    android:layout_centerHorizontal="true" 
    android:layout_alignBottom="@+id/main_equation_deno" 
    android:layout_alignTop="@+id/main_equation_num" 
    android:gravity="center_vertical" /> 

<TextView 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:text="-b ± √(b - 4ac)" 
    android:id="@+id/main_equation_num" 
    android:textSize="30sp" 
    android:textColor="#FFFFFF" 
    android:gravity="center_vertical|center_horizontal" 
    android:layout_above="@+id/imageView2" 
    android:paddingBottom="3dp" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentStart="true" 
    android:layout_alignParentRight="true" /> 

<TextView 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:textAppearance="?android:attr/textAppearanceSmall" 
    android:text="2" 
    android:id="@+id/square" 
    android:layout_marginBottom="25dp" 
    android:textColor="#FFFFFF" 
    android:textSize="15sp" 
    android:textIsSelectable="false" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentStart="true" 
    android:gravity="center_horizontal" 
    android:layout_marginLeft="25dp" 
    android:layout_alignBottom="@+id/imageView2" /> 

<TextView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="2a" 
    android:id="@+id/main_equation_deno" 
    android:layout_below="@+id/imageView2" 
    android:textSize="30sp" 
    android:textColor="#FFFFFF" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentStart="true" 
    android:layout_alignParentRight="true" 
    android:layout_alignParentEnd="true" 
    android:gravity="center_horizontal" /> 

</RelativeLayout> 

这里是我的名单适配器:

public class StepListAdapter extends ArrayAdapter<Step> { 

private Context mContext; 
private ArrayList<Step> mSteps = new ArrayList<Step>(); 

public StepListAdapter(Context context, ArrayList<Step> steps) { 
    super(context, 0, steps); 

    this.mContext = context; 
    this.mSteps = steps; 

} 

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 

     LayoutInflater inflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 

     View view = inflater.inflate(R.layout.step_row, parent, false); 

     TextView main_num = (TextView) view.findViewById(R.id.main_equation_num); 
     TextView main_deno = (TextView) view.findViewById(R.id.main_equation_deno); 

     main_num.setText(mSteps.get(position).getNum()); 
     main_deno.setText(mSteps.get(position).getDeno()); 

    return view; 
    } 
} 

任何有关此问题的帮助将得到高度赞赏。谢谢。

+0

无论你在哪里:'android:layout_below =“@ + id/imageView2”'(介意** + **!)你创建一个**新的ID **。引用**现有** id的正确方法是'android:layout_below =“@ id/imageView2”'(** no plus sign **)。这就是为什么你在所有其他视图之前声明这个“android:id =”@ + id/imageView2“**”。 –

+0

但是,我没有那样做。 Android Studio的图形编辑器做到了! – Swap

+0

Android Studio仍然有很多可以从Eclipse学习... –

回答

1

尝试使用此布局,

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:background="#000000" 
    android:orientation="vertical" > 

    <RelativeLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:gravity="center_horizontal|bottom" > 

     <TextView 
      android:id="@+id/main_equation_num" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="-b ± √(b - 4ac)" 
      android:textColor="#FFFFFF" 
      android:textSize="30sp" /> 

     <TextView 
      android:id="@+id/square" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_alignParentTop="true" 
      android:text="2" 
      android:layout_marginLeft="105dp" 
      android:textAppearance="?android:attr/textAppearanceSmall" 
      android:textColor="#FFFFFF" 
      android:textIsSelectable="false" 
      android:textSize="15sp" /> 

    </RelativeLayout> 

    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:gravity="center_vertical" 
     android:orientation="horizontal" > 

     <TextView 
      android:id="@+id/textView4" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:paddingLeft="5dp" 
      android:text="or," 
      android:textAppearance="?android:attr/textAppearanceSmall" 
      android:textColor="#FFFFFF" 
      android:textSize="20sp" /> 

     <View 
      android:id="@+id/imageView2" 
      android:layout_width="0dp" 
      android:layout_height="1.5dp" 
      android:layout_weight="1" 
      android:background="#ffffff" 
      android:paddingLeft="50dp" 
      android:paddingRight="50dp" /> 
    </LinearLayout> 

    <TextView 
     android:id="@+id/main_equation_deno" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_gravity="center_horizontal" 
     android:text="2a" 
     android:textColor="#FFFFFF" 
     android:textSize="30sp" /> 

</LinearLayout> 

我已在你的XML的一些变化只是复制粘贴此XML。

希望这可以帮助你莫名其妙。

+0

试着让我知道对你有帮助。 –

+0

您正在介绍**不必要的额外级别嵌套**。 –

+0

@Der Golem,我尊重你对此的疑问,即我在布局中引入了不必要的嵌套。并以某种方式帮助交换它对我来说非常棒。 –

1

你可以尝试不同的方式来膨胀行:

查看视图= inflater.inflate(R.layout.step_row,NULL);

或尝试设置最小行高。 编辑:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:minHeight="400dp"> 
... 
+0

不幸的是,没有任何解决方案的工作。 – Swap