我正在做一个应用程序,将使用二次公式执行二次计算。为了显示解决方程的步骤,我将ListView
作为ListView
项目。但是,为了在ListView
中显示方程行,我创建的自定义布局在运行应用程序时完全搞砸了。Android - 自定义布局越来越乱搞ListView
这是它应该是什么样子:
和,这里就是它实际上看起来像:
我想不出有什么不对,我尝试了每一种可能的解决方案在互联网上找到。
这里是我的自定义布局的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;
}
}
任何有关此问题的帮助将得到高度赞赏。谢谢。
无论你在哪里:'android:layout_below =“@ + id/imageView2”'(介意** + **!)你创建一个**新的ID **。引用**现有** id的正确方法是'android:layout_below =“@ id/imageView2”'(** no plus sign **)。这就是为什么你在所有其他视图之前声明这个“android:id =”@ + id/imageView2“**”。 –
但是,我没有那样做。 Android Studio的图形编辑器做到了! – Swap
Android Studio仍然有很多可以从Eclipse学习... –