在我的活动中,我有一个FrameLayout
,假设用作片段的容器。
在我的片段中,我得到了一个没有回应的ScrollView
。 ScrollView
包含TextView
集android:layout_height="wrap_content"
,其中我的java代码中的文字明显长于ScrollView
的大小。
我的片段xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<ImageView
android:layout_width="@dimen/bookview.imageWidth"
android:layout_height="250dp"
android:id="@+id/bookView.image"/>
<TextView
android:textSize="@dimen/custom_book_text"
android:layout_height="wrap_content"
android:layout_width="fill_parent"
android:layout_toEndOf="@id/bookView.image"
android:id="@+id/bookView.name"/>
<TextView
android:textSize="@dimen/custom_book_text"
android:layout_height="wrap_content"
android:layout_width="fill_parent"
android:layout_toEndOf="@id/bookView.image"
android:layout_below="@id/bookView.name"
android:id="@+id/bookView.author"/>
<TextView
android:textSize="@dimen/custom_book_text"
android:layout_height="wrap_content"
android:layout_width="fill_parent"
android:layout_toEndOf="@id/bookView.image"
android:layout_below="@id/bookView.author"
android:id="@+id/bookView.pages"/>
<TextView
android:textSize="@dimen/custom_book_text"
android:layout_height="wrap_content"
android:layout_width="fill_parent"
android:layout_toEndOf="@id/bookView.image"
android:layout_below="@id/bookView.pages"
android:id="@+id/bookView.category"/>
<TextView
android:textSize="@dimen/custom_book_text"
android:layout_height="wrap_content"
android:layout_width="fill_parent"
android:layout_toEndOf="@id/bookView.image"
android:layout_below="@id/bookView.category"
android:id="@+id/bookView.publishingDate"/>
</RelativeLayout>
<ScrollView
android:layout_height="200dp"
android:layout_width="match_parent"
android:layout_gravity="end">
<TextView
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:textSize="@dimen/custom_book_text"
android:id="@+id/bookView.description"/>
</ScrollView>
</LinearLayout>
活动的xml:
<android.support.v4.widget.DrawerLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/use.drawer">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<FrameLayout
android:layout_width="match_parent"
android:layout_height="@dimen/user_custom_book_height"
android:id="@+id/user.customBookContainer"/>
<FrameLayout
android:layout_width="match_parent"
android:layout_height="fill_parent"
android:id="@+id/user.container"/>
</LinearLayout>
<include
layout="@layout/navigation_drawer"
android:layout_width="240dp"
android:layout_height="match_parent"
android:layout_gravity="start"/>
</android.support.v4.widget.DrawerLayout>
我使用FrameLayout因为我想在runtime.better想法中更改该区域中的片段?我喜欢听。
我试图降低ScrollView的高度。 我的片段java代码:
public class BookView extends Fragment {
private Bitmap bitmap;
private String name;
public static BookView newInstance(String book,Bitmap bitmap) {
Bundle args = new Bundle();
BookView fragment = new BookView();
fragment.bitmap = bitmap;
fragment.name = book;
fragment.setArguments(args);
return fragment;
}
public BookView() {
// Required empty public constructor
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View v = inflater.inflate(R.layout.fragment_book_view, container, true);
Backend backend = BackendFactory.getInstance();
try {
Book b = backend.readBook(name);
TextView textView = (TextView)v.findViewById(R.id.bookView_name);
textView.setText(b.getBookName());
textView = (TextView)v.findViewById(R.id.bookView_author);
textView.setText(b.getAuthor());
textView = (TextView)v.findViewById(R.id.bookView_category);
textView.setText(b.getCategory().name());
textView = (TextView)v.findViewById(R.id.bookView_description);
textView.setText(b.getDescription());
textView = (TextView)v.findViewById(R.id.bookView_pages);
textView.setText(Integer.toString(b.getPages()));
textView = (TextView)v.findViewById(R.id.bookView_publishingDate);
textView.setText(b.getPublishingDate());
final ImageView imageView = (ImageView)v.findViewById(R.id.bookView_image);
if(bitmap != null){
imageView.setImageBitmap(bitmap);
} else{
ImageLoader imageLoader = new ImageLoader();
imageLoader.setListener(new ImageLoader.ImageTaskListener() {
@Override
public void onActionEnd() {}
@Override
public void onImageDownload(Bitmap bitmap) {
imageView.setImageBitmap(bitmap);
}
});
imageLoader.execute(b.getImage());
}
}
catch (Exception e) {
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
builder.setMessage(e.getMessage());
builder.create().show();
}
return inflater.inflate(R.layout.fragment_book_view, container, false);
}
}
imageLoader是我写的一个类,它从url扩展了AsyncTask以下载图像,并在准备就绪时更新UI。
答案 0 :(得分:0)
我假设您能够看到片段的视图。
如果有以下几点要尝试:
将滚动视图设置为fillViewPort =&#34; true&#34; 然后设置文本视图以匹配父级,因为这是滚动视图中的唯一视图。作为一个注释你应该真的避免使用硬编码宽度&amp;高度(甚至dp高度)。
而不是返回
return inflater.inflate(R.layout.fragment_book_view, container, false);
只返回原始视图:v
诺特尔&#39;可读性:不是每次都重新分配textview。 做:
((TextView)v.findViewById(R.id.blabla)).setText("BLA");
修改强>
我测试了这个&amp;有用。
<ScrollView
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="2"
android:fillViewport="true">
<TextView
android:id="@+id/faq_output_answer"
android:layout_width="match_parent"
android:layout_margin="10dp"
android:layout_height="match_parent" />
</ScrollView>
答案 1 :(得分:0)
我认为这个片段的其他部分(TextViews和ImageViews)遍布屏幕的所有区域,ScrollView渲染出屏幕。 我建议你把所有布局放在ScrollView中。 像这样:
<?xml version="1.0" encoding="utf-8"?>
<ScrollView
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="end">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<ImageView
android:id="@+id/bookView.image"
android:layout_width="@dimen/bookview.imageWidth"
android:layout_height="250dp"/>
<TextView
android:id="@+id/bookView.name"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_toEndOf="@id/bookView.image"
android:textSize="@dimen/custom_book_text"/>
<TextView
android:id="@+id/bookView.author"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_below="@id/bookView.name"
android:layout_toEndOf="@id/bookView.image"
android:textSize="@dimen/custom_book_text"/>
<TextView
android:id="@+id/bookView.pages"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_below="@id/bookView.author"
android:layout_toEndOf="@id/bookView.image"
android:textSize="@dimen/custom_book_text"/>
<TextView
android:id="@+id/bookView.category"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_below="@id/bookView.pages"
android:layout_toEndOf="@id/bookView.image"
android:textSize="@dimen/custom_book_text"/>
<TextView
android:id="@+id/bookView.publishingDate"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_below="@id/bookView.category"
android:layout_toEndOf="@id/bookView.image"
android:textSize="@dimen/custom_book_text"/>
</RelativeLayout>
<TextView
android:id="@+id/bookView.description"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="@dimen/custom_book_text"/>
</LinearLayout>
答案 2 :(得分:0)
尝试将空视图作为滚动视图中的最后一项。
<View
android:layout_width = "match_parent"
android:layout_height = "50dp" />
这对我有用。