gpt4 book ai didi

java - 动态添加 View 到LinearLayout

转载 作者:行者123 更新时间:2023-12-01 08:52:23 24 4
gpt4 key购买 nike

我已经尝试解决这个问题几天了,但没有得到任何结果。问题出在 View sub_task_comment_item 中,我试图将其添加到另一个 LinearLayout comment_container_layout 中,它没有显示行的所有元素。下面显示一些图片。

在这两种情况下图像都会丢失。

When view is inflated like this, result is:

final View subTaskView = layoutInflater.inflate(R.layout.sub_task_comment_item, comment_layout, false);

If inflated like this, than:

 final View subTaskView = layoutInflater.inflate(R.layout.sub_task_comment_item, null);

AddingTaskFragment 调用 addComment(View view) 的方法

 public void onAddCommentButtonClicked(View view)
{
addingTaskFragment.addComment(view);
}

添加TaskFragment

public class AddingTaskFragment extends Fragment {

private Activity activity;

//Comments
private CheckBox comments_available;
private LinearLayout comment_container_layout;
private LinearLayout comment_layout;

@Override
public void onAttach(Context context)
{
super.onAttach(context);
this.activity = (Activity) context;
}

@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState)
{
View viewHierarchy = inflater.inflate(R.layout.fragment_new_task_type, container, false);

comments_available = (CheckBox) viewHierarchy.findViewById(R.id.use_comment_checkBox);
comment_container_layout = (LinearLayout)viewHierarchy.findViewById(R.id.comment_container_layout);
comment_layout = (LinearLayout)viewHierarchy.findViewById(R.id.comment_container);

isCommentsAvailable();

return viewHierarchy;
}

private void isCommentsAvailable()
{
comments_available.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener()
{
@Override
public void onCheckedChanged(CompoundButton compoundButton, boolean b)
{
if(b)
{
comment_container_layout.setVisibility(View.VISIBLE);
}
else comment_container_layout.setVisibility(View.GONE);
}
});
}

public void addComment(View view)
{
switch (view.getId())
{
case button_add_comment :
LayoutInflater layoutInflater = (LayoutInflater) activity.getBaseContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
final View subTaskView = layoutInflater.inflate(R.layout.sub_task_comment_item, comment_layout, false);

if (comment_layout != null)
{
comment_layout.addView(subTaskView);
}

ImageView buttonRemove = (ImageView) subTaskView.findViewById(R.id.remove_sub_task_icon);

final View.OnClickListener thisListener = new View.OnClickListener()
{
@Override
public void onClick(View v)
{
((LinearLayout)subTaskView.getParent()).removeView(subTaskView);
}
};

buttonRemove.setOnClickListener(thisListener);

break;
}
}
}

fragment 布局 - fragment_new_task_type

<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:orientation="vertical"
android:paddingLeft="16dp"
android:paddingRight="16dp"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:focusableInTouchMode="true">

<TextView
android:id="@+id/task_type"
android:layout_width="wrap_content"
android:layout_height="60dp"
android:text="No type selected"
android:gravity="center_vertical"
android:textSize="34sp"
style="@style/TextRobotoRegular"
android:textColor="@color/colorTitleText"/>

<android.support.design.widget.TextInputLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="12dp"
style="@style/StyledTilEditTextLayout"
app:hintTextAppearance="@style/StyledTilEditTextFloatingLabel">

<EditText
android:id="@+id/task_type_input"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/task_type_hint"
android:inputType="text"
android:maxLines="1"
android:textSize="24sp"
android:maxLength="38"
style="@style/StyledTilEditText"/>

</android.support.design.widget.TextInputLayout>

<include layout="@layout/layout_task_title_input" />
<include layout="@layout/layout_task_date_input" />
<include layout="@layout/layout_task_start_time_input" />
<include layout="@layout/layout_task_end_time_input" />
<include layout="@layout/layout_task_comment_input" />
<include
android:id="@+id/comment_container_layout"
layout="@layout/layout_task_comment_container"
android:visibility="gone"/>

<include layout="@layout/layout_task_sub_tasks_input" />
<include layout="@layout/layout_task_sub_tasks_container"
android:visibility="gone"/>
<include layout="@layout/layout_task_importance_input" />
<include layout="@layout/layout_task_importance"
android:visibility="gone"/>
<include layout="@layout/layout_task_interests_input" />
<include layout="@layout/layout_task_interests"
android:visibility="gone"/>

</LinearLayout>

View 容器,我正在尝试添加

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="16dp"
android:orientation="vertical">

<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:gravity="center_vertical"
android:id="@+id/button_add_comment"
android:onClick="onAddCommentButtonClicked">

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingRight="16dp"
style="@style/TextRobotoRegular"
android:textSize="16sp"
android:text="@string/add_comment_task_hint"
android:textColor="@color/colorTitleText"/>

<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:srcCompat="@drawable/ic_add_task" />

</LinearLayout>

<LinearLayout
android:id="@+id/comment_container"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:orientation="vertical">

</LinearLayout>

</LinearLayout>

sub_task_comment_item - 我尝试添加的行。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:orientation="horizontal"
android:background="@color/colorGreyText10"
android:paddingLeft="16dp"
android:paddingRight="16dp"
android:layout_width="match_parent"
android:layout_height="48dp"
android:gravity="center_vertical">

<TextView
android:id="@+id/sub_item_number"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:text="1."
android:layout_weight="1"
android:textSize="16sp"
style="@style/TextRobotoLight"/>

<TextView
android:id="@+id/sub_item_content"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="10"
android:text="Make a design"
android:textSize="16sp"
style="@style/TextRobotoLight"/>

<ImageView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
app:srcCompat="@drawable/ic_remove_task"
android:id="@+id/remove_sub_task_icon" />

</LinearLayout>

最佳答案

您的代码至少对我来说似乎是正确的,问题可能与您的 vector 图像或其配置有关。尝试用普通图像替换 vector 并使用 ImageView 的 src 属性。

交叉检查-

  1. 在 build.gradle 中添加了 vector 支持

    android {  
    defaultConfig {
    vectorDrawables.useSupportLibrary = true
    }
    }

关于java - 动态添加 View 到LinearLayout,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42305248/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com