我在让ScrollView正常运行方面遇到了很多麻烦。我使用的是Master-Detail设计。主人滚动,因为它是一个listView。选中的详细信息将显示我的XML中实现的滚动条几秒钟,当活动膨胀之前消失(Stackoverflow赢了,因为这是我的第一篇文章,所以我允许发布错误的屏幕截图)
当我尝试使用触摸输入滚动详细信息活动时,没有任何反应。我曾尝试将梅尔的解决方案复制并粘贴到ScrollView doesn't work帖子中的相同问题。我还为父,子和ScrollView本身尝试了match_parent和fill_parent的所有可想到的组合。任何帮助表示赞赏。我的XML代码如下:
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/item_detail_container"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".ItemDetailActivity"
tools:ignore="MergeRootFrame">
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/scrollLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:fillViewport="true"
>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/linearLayout"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="5dp"
android:layout_marginTop="20dp"
android:stretchColumns="1, 2"
>
<ImageView
android:id="@+id/picture"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="20dp"
android:src="@drawable/bmp1"
android:layout_alignParentTop="true"
/>
<TableLayout
android:id="@+id/tableLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="5dp"
android:layout_marginTop="20dp"
android:stretchColumns="1, 2">
<!-- Table Row 0 -->
<TableRow
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:id="@+id/tableRow0">
<TextView
android:id="@+id/priWeapon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/priWeapon" android:textColor="#000" android:textStyle="bold"
android:gravity="left"
android:padding="5dp"/>
<EditText
android:id="@+id/priWeaponEditText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/NA" android:textSize="14sp" android:textStyle="bold"
android:gravity="center"
android:focusable="false"
android:layout_weight="1"
android:cursorVisible="false"
android:longClickable="false"/>
</TableRow>
<!-- Table Row 1 -->
<TableRow
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:id="@+id/tableRow1">
<TextView
android:id="@+id/priWeaponRange"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/priMaxRange" android:textColor="#000"
android:gravity="left"
android:padding="5dp"/>
<EditText
android:id="@+id/priWeaponRangeEditText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/NA" android:textSize="14sp"
android:gravity="center"
android:focusable="false"
android:layout_weight="1"
android:cursorVisible="false"
android:longClickable="false"/>
</TableRow>
</TableLayout>
</LinearLayout>
</ScrollView>
</FrameLayout>
&#13;
答案 0 :(得分:4)
我找到了解决方案!我没有尝试将格式应用于Activity XML本身,而是将其剪切并粘贴到Activity的Fragment XML中,而这些XML没有frameLayout。由于这种变化,它现在可以完美滚动,同时在整个滚动条中保持标题栏的顶部,这正是我想要的行为。我已经发布了下面的最终代码。如果你有一个解决方案仍然允许我在FrameLayout中使用scrollView,虽然我非常乐意看到它以供将来参考。谢谢你的帮助!
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/scrollLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:fillViewport="true"
>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/linearLayout"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="5dp"
android:layout_marginTop="20dp"
android:stretchColumns="1, 2"
>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/item_detail"
style="?android:attr/textAppearanceLarge"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="16dp"
android:textIsSelectable="true"
tools:context=".ItemDetailFragment"/>
<ImageView
android:id="@+id/picture"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="20dp"
android:src="@drawable/bmp1"
android:layout_alignParentTop="true"
/>
<TableLayout
android:id="@+id/tableLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="5dp"
android:layout_marginTop="20dp"
android:stretchColumns="1, 2">
<!-- Table Row 0 -->
<TableRow
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:id="@+id/tableRow0">
<TextView
android:id="@+id/priWeapon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/priWeapon" android:textColor="#000" android:textStyle="bold"
android:gravity="left"
android:padding="5dp"/>
<EditText
android:id="@+id/priWeaponEditText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/NA" android:textSize="14sp" android:textStyle="bold"
android:gravity="center"
android:focusable="false"
android:layout_weight="1"
android:cursorVisible="false"
android:longClickable="false"/>
</TableRow>
</TableLayout>
</LinearLayout>
</ScrollView>
答案 1 :(得分:1)
您的目标是使用ImageView
的最大屏幕尺寸,然后向下滚动到(首先看不见)TableLayout
?多数民众赞成不可能。在ImageView上设置android:layout_height="fill_parent"
时,它会使用最大可能空间(在您的示例中为所有屏幕大小)空间。因此,不会呈现TableLayout
,也不需要滚动。您应该在ImageView中设置android:layout_height="wrap_content"
。
关于源代码的一些注释:
match_parent
代替fill_parent
。它自API等级8起重命名android:layout_below="@id/picture"
中有一个无用的TableLayout
。是否使用RelativeLayout
?TableLayout