Я использую relativelayout внутри scrollview, и я добавляю взгляды к этому relativelayout динамически. Хотя представления больше, чем экраны его не прокрутки. Помогите решить эту задачу.Относительная компоновка внутри прокрутки не работает отлично.
Мои ScrollView XML:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
tools:context=".MainActivity" >
<ScrollView
android:id="@+id/mainScrollView"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/bg"
android:fillViewport="true"
>
<RelativeLayout
android:id="@+id/relativeLayout1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
</ScrollView>
</RelativeLayout>
Код, используемый для динамического добавления изображений:
if (isOddViewNo)
{
isOddViewNo=false;
final View view= getLayoutInflater().inflate(R.layout.sample, null);
iv= (ImageView)view.findViewById(R.id.iv_small);
ImageView iv1= (ImageView)view.findViewById(R.id.iv_big);
iv.setVisibility(View.VISIBLE);
iv1.setVisibility(View.GONE);
iv.setImageResource(R.drawable.ic_launcher);
iv.setX(x-45);
iv.setY(ypos+17);
RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.FILL_PARENT, ViewGroup.LayoutParams.FILL_PARENT);
view.setLayoutParams(lp);
rl.addView(view);
x+=100;
}
else
{
isOddViewNo=true;
final View view= getLayoutInflater().inflate(R.layout.sample, null);
iv= (ImageView)view.findViewById(R.id.iv_big);
ImageView iv1= (ImageView)view.findViewById(R.id.iv_small);
iv.setVisibility(View.VISIBLE);
iv1.setVisibility(View.GONE);
iv.setImageResource(R.drawable.ic_launcher);
// iv.setLayoutParams(new LayoutParams(200,200));
iv.setX(x-45);
iv.setY(ypos);
RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.FILL_PARENT, ViewGroup.LayoutParams.FILL_PARENT);
view.setLayoutParams(lp);
rl.addView(view);
x+=178;
}
Мой надутый sample.xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<ImageView
android:layout_height="50dp"
android:layout_width="50dp"
android:id="@+id/iv_small"
android:visibility="gone"
/>
<ImageView
android:layout_height="80dp"
android:layout_width="80dp"
android:id="@+id/iv_big"
android:visibility="gone"
/>
</LinearLayout>
Мой скриншот:
Попробовали ли вы установить параметр макета высоты для представления, добавленного кодом, чтобы обернуть содержимое, а не заполнить родительский элемент? – Diego
Да пробовал, но не работал – user1891910
Прежде всего, измените обертывание содержимого, как ширины, так и высоты, родительского отношения relativelayout в sample.xml. Вы устанавливаете значения x и y в виде изображения внутри sample.xml. попробуйте установить x и y на весь макет (вид переменной). – Diego