免责声明:我是Android新手,只是找到自己的方式 - Fragments
让我感到困惑。
我正在制作一个最终会有标签布局的简历应用。现在我正在首页上工作,它将显示带有图像和名称的标题,然后是带有简短摘要语句的TextView,以及“核心技能”列表下方。在尝试向我的ListView
添加MainActivity.java
时,我一直遇到同样的问题 - 它会粘贴在我所有其他元素上而不是出现在底部。
有没有办法让ListView
只显示在底部而不使用Fragment
?如果我必须使用Fragment
,那么在那里只有一个静态列表的简单代码是什么?
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
private ArrayList<String[]> coreSkills = new ArrayList<String[]>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//set the content view of the activity
setContentView(R.layout.activity_main);
//set a text view for the Summary
TextView profileSummary = (TextView) findViewById(R.id.summary_text);
profileSummary.setText(R.string.profile_summary);
String[] coreSkills = {
"Android Development",
"GitHub",
"Skill",
"Skill",
"Skill",
"Skill"
};
ArrayAdapter<String> coreSkillsAdapter =
new ArrayAdapter<String>(this, R.layout.core_skills_list,
R.id.skill_name, coreSkills);
ListView coreSkillsList = new ListView(this);
setContentView(coreSkillsList);
coreSkillsList.setAdapter(coreSkillsAdapter);
}
}
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
>
<RelativeLayout
android:id="@+id/top_info_bar"
android:layout_width="match_parent"
android:layout_height="112dp"
android:background="@color/colorPrimary">
<ImageView
android:id="@+id/photo"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:src="@drawable/ic_face_white_48dp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/photo"
android:layout_centerHorizontal="true"
android:text="Your Name"
android:textColor="@color/textWhite"
android:textSize="24sp" />
</RelativeLayout>
<RelativeLayout
android:id="@+id/bottom_info_bar"
android:layout_width="match_parent"
android:layout_height="24dp"
android:background="@color/colorPrimaryLight">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</RelativeLayout>
<LinearLayout
android:id="@+id/main_content"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:paddingLeft="16dp"
android:paddingRight="16dp"
android:paddingTop="16dp">
<TextView
android:id="@+id/summary_heading"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingBottom="16dp"
android:text="Summary"
android:textColor="@color/textBlack"
android:textSize="18sp" />
<TextView
android:id="@+id/summary_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingBottom="16dp"
android:textColor="@color/textBlack"
android:textSize="14sp" />
<TextView
android:id="@+id/core_skills_heading"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingBottom="16dp"
android:text="Core Skills"
android:textColor="@color/textBlack"
android:textSize="18sp" />
</LinearLayout>
<include layout="@layout/core_skills_list" />
</LinearLayout>
activity_main.xml
运行所有这些信息时,我的应用程序在启动时崩溃。这两个文件都是LinearLayouts
,其中包含嵌套子项。
谢谢!
答案 0 :(得分:0)
您没有将列表视图添加到片段中。您正在使用列表视图替换活动的内容视图。
setContentView(coreSkillsList);
在这种情况下,您实际上并不需要片段。你可以这样做:
在ListView
布局的末尾添加activity_main
视图。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
>
....
<ListView
android:id="@+id/my_list_view"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</LinearLayout>
并在您的活动中访问它:
....
ListView coreSkillsList = (ListView) findViewById(R.id.my_list_view);
coreSkillsList.setAdapter(coreSkillsAdapter);
....