如何在 Android 中使用相对布局在另一个视图下显示一个视图(例如文本视图),但前提是有文本 - 即不为空
How, in Android, using relative layout, display a view (example textview) under another one, but only if has text - i.e. not empty
假设,使用相对布局,在第一行我显示一个日期文本字段,然后在它旁边显示一个项目文本视图,然后我想在项目文本视图下方显示一个描述文本视图,但前提是说明不为空。有没有"conditional"属性可以用的?我们怎么能这样做?
谢谢!
任何框架视图都没有这样的条件属性。
一个简单的方法是在您的 Java 代码中这样做:
String description;
TextView descriptionView;
if (TextUtils.isEmpty(description)) {
descriptionView.setVisibility(View.GONE);
} else {
descriptionView.setText(description);
descriptionView.setVisibility(View.VISILBE);
}
当有内容要显示时,您可以将 TextView 放置在您希望它位于布局中的任何位置,而当没有内容要显示时,只需将其隐藏。
textview 上有一个属性可让您控制其可见性。
在 xml:
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/dependentTextViewId"
android:visibility="invisible"
/>
然后在您的 activity java 中,您可以根据侦听器或其他条件将其设置为可见
TextView tv = (TextView) myView.findViewById(R.id.dependentTextViewId);
tv.setVisibility(View.VISIBLE);
//Thanks to Tanis for providing the answer on conditionally hiding a TextView
//So the complete solution is to create a custom SimpleAdapter:
public class JournalDisplayListAdapter extends SimpleAdapter {
//--- some code skipped here
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View row = super.getView(position, convertView, parent);
TextView activityGroupName;
TextView activityDescription;
if (row != null) {
activityGroupName = (TextView) row.findViewById(R.id.activityGroupName);
if (TextUtils.isEmpty(activityGroupName.getText())){
activityGroupName.setVisibility(View.GONE);
} else {
activityGroupName.setVisibility(View.VISIBLE);
}
activityDescription = (TextView) row.findViewById(R.id.activityDescription);
if (TextUtils.isEmpty(activityDescription.getText())){
activityDescription.setVisibility(View.GONE);
}else {
activityDescription.setVisibility(View.VISIBLE);
}
}
return row;
}
假设,使用相对布局,在第一行我显示一个日期文本字段,然后在它旁边显示一个项目文本视图,然后我想在项目文本视图下方显示一个描述文本视图,但前提是说明不为空。有没有"conditional"属性可以用的?我们怎么能这样做?
谢谢!
任何框架视图都没有这样的条件属性。
一个简单的方法是在您的 Java 代码中这样做:
String description;
TextView descriptionView;
if (TextUtils.isEmpty(description)) {
descriptionView.setVisibility(View.GONE);
} else {
descriptionView.setText(description);
descriptionView.setVisibility(View.VISILBE);
}
当有内容要显示时,您可以将 TextView 放置在您希望它位于布局中的任何位置,而当没有内容要显示时,只需将其隐藏。
textview 上有一个属性可让您控制其可见性。 在 xml:
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/dependentTextViewId"
android:visibility="invisible"
/>
然后在您的 activity java 中,您可以根据侦听器或其他条件将其设置为可见
TextView tv = (TextView) myView.findViewById(R.id.dependentTextViewId);
tv.setVisibility(View.VISIBLE);
//Thanks to Tanis for providing the answer on conditionally hiding a TextView
//So the complete solution is to create a custom SimpleAdapter:
public class JournalDisplayListAdapter extends SimpleAdapter {
//--- some code skipped here
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View row = super.getView(position, convertView, parent);
TextView activityGroupName;
TextView activityDescription;
if (row != null) {
activityGroupName = (TextView) row.findViewById(R.id.activityGroupName);
if (TextUtils.isEmpty(activityGroupName.getText())){
activityGroupName.setVisibility(View.GONE);
} else {
activityGroupName.setVisibility(View.VISIBLE);
}
activityDescription = (TextView) row.findViewById(R.id.activityDescription);
if (TextUtils.isEmpty(activityDescription.getText())){
activityDescription.setVisibility(View.GONE);
}else {
activityDescription.setVisibility(View.VISIBLE);
}
}
return row;
}