ScrollView innerhalb fragment nicht scrollen
In meiner Tätigkeit habe ich eine FrameLayout
, dass wohl die Verwendung als container für die Scherben.
In meinem fragment bekam ich einen ScrollView
nicht reagieren. ScrollView
enthält TextView
set android:layout_height="wrap_content"
mit text von meinem java-code, der deutlich länger als die Größe des ScrollView
.
Meine xml-fragment:
<?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 der Tätigkeit:
<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>
benutze ich FrameLayout, weil ich mich ändern will, das fragment in diesem Bereich,in der runtime.bessere Idee? ich mag zu hören.
habe ich versucht, decrese die Höhe der ScrollView.
mein java-code-fragment:
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 ist eine Klasse, die ich schrieb,es extened AsyncTask für das laden Sie Bild aus url, und aktualisieren Sie die Benutzeroberfläche, wenn Sie es bereit.
- warum sind Sie mit framelayout für Fragmente, die dafür einen bestimmten Grund?
- können Sie Ihre code -, screenshot wäre besser ?
- versuchen Sie es mit linearer Anordnung oder relative anstelle von framelayout.
- Ihr text eindeutig entweder nicht lange genug oder Ihr über scrollview widgets mehr Raum einnimmt, so ist es nicht sichtbar in der Benutzeroberfläche. überprüfen Sie erneut, oder posten Sie Ihre screenshot@user4349397
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich denke, andere Teile (TextViews und ImageViews) dieses fragment alle Bereich der Bildschirm-und ScrollView Rendern des Bildschirms.
Ich schlage vor, Sie setzen alle layout-innen ScrollView.
wie diese:
Ich nehme an, Sie sind in der Lage, um zu sehen, das fragment anzeigen.
Wenn so ein paar Dinge zu versuchen:
Stellen Sie den Schieberegler-Ansicht, um fillViewPort="true"
und legen Sie dann die text-Ansicht zu entsprechen, Eltern-denn dies ist die einzige Ansicht in der scroll-Ansicht. Als Hinweis sollte man wirklich vermeiden Sie hart codierte Breite & Höhen (auch dp Höhen).
Anstatt
nur wieder das original anzeigen: v
Nother' bit der Lesbarkeit: statt Neuzuweisen von textview jeder Zeit.
tun:
Edit:
Ich habe getestet dieses & es funktioniert.
Versuchen Sie, einen leeren Blick, als Sie das Letzte Element in deinem scrollview.
Dieser arbeitete für mich.