我有Android xml的布局问题。我很抱歉,如果这是一个noob问题,但xml对我来说是神奇的,虽然我知道它真的不应该
无论如何,这是制作麻烦的布局文件(content_activity_deal_creation):
<?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">
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
tools:context=".activities.DealCreationActivity"
tools:showIn="@layout/activity_deal_creation">
<ImageView
android:id="@+id/imageViewDealCreation"
android:layout_width="match_parent"
android:layout_height="200dp"
android:layout_alignParentEnd="true"
android:layout_alignParentLeft="true"
android:layout_alignParentRight="true"
android:layout_alignParentStart="true"
android:layout_alignParentTop="true"
android:src="@drawable/ic_add_a_photo_black_24dp"/>
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:inputType="number"
android:ems="10"
android:id="@+id/priceInput"
android:hint="@string/price"
android:textAlignment="center"
android:layout_marginTop="18dp"
android:layout_below="@+id/storeEditText"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true" />
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/dealDescriptionEditText"
android:hint="@string/deal_description"
android:textAlignment="center"
android:layout_below="@+id/imageViewDealCreation"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_marginTop="18dp" />
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAlignment="center"
android:id="@+id/dealTitleEditText"
android:hint="@string/title_deal_deal_creation"
android:layout_marginTop="18dp"
android:layout_below="@+id/dealDescriptionEditText"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true" />
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/storeEditText"
android:hint="@string/store"
android:textAlignment="center"
android:layout_marginTop="18dp"
android:layout_below="@+id/dealTitleEditText"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true" />
</RelativeLayout>
</ScrollView>
这是包含的activit_deal_creation.xml:
<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
tools:context=".activities.DealCreationActivity">
<android.support.v4.widget.NestedScrollView
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior">
<include layout="@layout/content_activity_deal_creation" />
</android.support.v4.widget.NestedScrollView>
<android.support.design.widget.AppBarLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:theme="@style/AppTheme.AppBarOverlay">
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/colorPrimary"
app:popupTheme="@style/AppTheme.PopupOverlay"/>
</android.support.design.widget.AppBarLayout>
</android.support.design.widget.CoordinatorLayout>
当我拍照并将其放入ImageView时,情况会变得更糟。然后只有大约一半的piture是可见的。 我在这里失踪的是什么?必须能够正常放入屏幕。
我感谢任何帮助!非常感谢!
上面的代码从下面接受的答案中引出了解决方案。 谢谢您的帮助。我希望这有助于将来的某个人。
答案 0 :(得分:2)
首先,您的ImageView
不会被推离屏幕。它仍在屏幕上,但由AppBarLayout
覆盖。
通常CoordinatorLayout
的布局方式与FrameLayout
相同,这意味着在您的情况下,所有直接的孩子都会占据整个高度(match_parent
),并且会分层,一个在每个其他,但与CoordinatorLayout
有点不同。您在AppBarLayout
之上看到ScrollView
,因为它已应用默认依赖关系(AppBarLayout.Behavior
)而CoordinatorLayout
不是按正常顺序绘制所有内容,而是根据依赖关系链
您必须将此行为添加到ScrollView
。然后它将被绘制在AppBarLayout
下面,而不是它。
app:layout_behavior="@string/appbar_scrolling_view_behavior"
注意:您已在RelativeLayout
中声明了此行为,但无效。行为仅在CoordinatorLayout
的直接子项上声明时才起作用。您可以在此帖Intercepting everything with CoordinatorLayout Behaviors中详细了解详情。
答案 1 :(得分:1)
按AppBarLayout
ScrollView
中所述设置您的XML,包括更改NestedScrollView
ScrollView
。我的理解是CoordinatorLayout
不适用于private void standardRead()
{
BufferedInputStream bis = null;
try {
bis = new BufferedInputStream(new FileInputStream(new File(image_path)));
} catch (FileNotFoundException e) {
e.printStackTrace();
}
System.out.println("Is mark supported? "+bis.markSupported());
try {
for(int i=0;i<20;i++)
{
readingImage(bis,i);
TimeUnit.MILLISECONDS.sleep(250);
}
} catch (IOException | InterruptedException e) {
e.printStackTrace();
}
}
。
答案 2 :(得分:0)
问题似乎出现在@layout/activity_deal_creation
中 - 您可能会在FrameLayout
或其他将Toolbar
放在滚动视图顶部的容器中包含此视图。你需要在那里更改它以使你的ScrollView
在Y轴下方工具栏