Android - 在另一个静态活动中显示静态活动

时间:2017-05-15 14:21:12

标签: java android listview android-fragments

免责声明:我是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,其中包含嵌套子项。

谢谢!

1 个答案:

答案 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);
....