如何使用java代码将自定义布局添加到视图中?

时间:2017-09-17 17:38:03

标签: android android-layout

我正在尝试为Android开发财务经理应用。我目前正在使用Android Studio 3.0 Beta 5,而且我正在使用Java。

我想在MainActivity上创建一个列表,以便在提供新事务时,该事务的详细信息显示在旧事务下的MainActivity中,就像列表一样。

listview似乎不是一个好主意,因为我无法插入一个简单的布局来显示类别,交易量等作为列表的元素(或者我可以?)。因此,当我从TransactionActivity返回到MainActivity时,我正试图出现一个新的布局。

以下是我的MainActivity中onCreate方法的一些相关代码:

 @Override
protected void onCreate(Bundle savedInstanceState) {
    // ...

    XmlPullParser parser = getResources().getXml(R.xml.transaction);
    AttributeSet attributes = Xml.asAttributeSet(parser);

    Transaction transaction = (Transaction) getIntent().getSerializableExtra("Transaction"); // imports the transaction object from TransactionActivity
    if (transaction != null) {

        LinearLayout linearLayout = findViewById(R.id.layout_main);
        LinearLayout transactionLayout = new LinearLayout(this, attributes);
        LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
        linearLayout.addView(transactionLayout, layoutParams);
    }


}

这是R.xml.transaction:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools">

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="SKrt"/>

</LinearLayout>

我添加了一个简单的textView来检查它是否在创建事务后正确显示,但屏幕上没有任何内容。

有没有更好的方法来实现这一切?如果没有,如何在点击时显示此布局?

2 个答案:

答案 0 :(得分:0)

首先,您应该将 transaction.xml 文件从xml文件夹移动到布局文件夹。然后你应该膨胀布局xml

View transactionLayout = View.inflate(getContext(), R.layout.transaction, null);
LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
linearLayout.addView(transactionLayout, layoutParams);

在此之后你应该可以看到TextView。

你也可以使用ListView,但是你需要创建一个ListAdapter并在适配器的getView()方法中膨胀 transactionLayout

答案 1 :(得分:0)

要添加自定义布局,您需要创建一个。

  1. 在您的情况下,因为您需要一个事务列表,您将需要activity_main.xml的列表视图(保持)。
  2. 要填充此列表,您需要一个自定义数组适配器。您可以搜索在线文档。此链接可能会有助https://www.caveofprogramming.com/guest-posts/custom-listview-with-imageview-and-textview-in-android.html
  3. 由于你想要一个自定义视图,你需要在android中创建一个,你将获得由android团队制作的默认视图。您只需要为单个列表项创建一个视图。
  4. 之后,在实施自定义适配器(您在制作自定义视图后进行制作)后,您需要将布局充气器设置为使用自定义布局而不是默认布局。