Как установить imageButton в верхний левый угол подвида (веб-просмотра) в Android

У меня возникли проблемы с установкой imageButton в верхний левый угол моего WebView, я понятия не имею, как играть с макетами (линейными или относительными), я пробовал много блоков кода, и ни один из них не работал для меня.

Вот как я создаю свой imageButton;

ImageButton mImageButton = new ImageButton(context);
        mImageButton.setImageResource(R.drawable.close_button);
        mImageButton.setLayoutParams(new ViewGroup.LayoutParams(width, height));
        mImageButton.setAdjustViewBounds(true);
        mImageButton.setBackgroundDrawable(null);
        mImageButton.setScaleType(ImageView.ScaleType.FIT_CENTER);

и вот как я создаю и добавляю свою кнопку изображения в веб-просмотр

        WebView mWebView = new WebView(context);
        mWebView.loadData(htmlContent, "text/html", "UTF-8");
        mWebView.addView(mImageButton);

Вот как это выглядит

любая идея о том, как я могу разместить его правильно, не используя xml, так как я пытаюсь сделать это для файла jar, который будет распространяться


person Evren Baykan    schedule 22.10.2015    source источник
comment
Почему вы не используете файлы макетов в формате xml?   -  person sonic    schedule 22.10.2015
comment
@sonic о, я должен был сказать, что в вопросе я создаю файл jar, который будет использоваться для других, так что это не вариант   -  person Evren Baykan    schedule 22.10.2015
comment
в соответствии с изображением вы можете использовать макет fream для этого типа просмотра   -  person Naveen Tamrakar    schedule 22.10.2015
comment
@Naveen прав, вы можете использовать макет фрейма, и в этом макете фрейма поместите веб-просмотр и просмотр изображения.   -  person AndroidDev    schedule 22.10.2015
comment
byt как @Harish, как я написал в вопросе, я понятия не имею, как играть с макетами   -  person Evren Baykan    schedule 22.10.2015


Ответы (3)


Приведенный ниже xml-код сделает это:

<RelativeLayout 
 android:layout_width="match_parent"
android:layout_height="match_parent"
>

<ImageButton
    android:layout_height="wrap_content"
    android:layout_width="wrap_content"
    android:layout_alignParentTop="true"
    />
<WebView
    android:layout_width="match_parent"
    android:layout_height="match_parent"/>
</RelativeLayout>
person Hari Krishnan    schedule 22.10.2015
comment
я не могу использовать файл xml по причине объяснения в вопросе - person Evren Baykan; 22.10.2015

Попробуй это:

RelativeLayout relativeLayout = (RelativeLayout) findViewById(R.id.mainLayout);

FrameLayout frameLayout = new FrameLayout(this);
frameLayout.setLayoutParams(
        new FrameLayout.LayoutParams(
                FrameLayout.LayoutParams.MATCH_PARENT,
                FrameLayout.LayoutParams.MATCH_PARENT));

View mWebView = new View(this);
mWebView.setBackgroundColor(Color.parseColor("#FF0000"));
mWebView.setLayoutParams(
        new ViewGroup.LayoutParams(
                FrameLayout.LayoutParams.MATCH_PARENT,
                FrameLayout.LayoutParams.MATCH_PARENT));

ImageButton mImageButton = new ImageButton(this);
mImageButton.setImageResource(android.R.drawable.star_big_on);
mImageButton.setLayoutParams(new ViewGroup.LayoutParams(200, 200));
mImageButton.setAdjustViewBounds(true);

frameLayout.addView(mWebView);
frameLayout.addView(mImageButton);

relativeLayout.addView(frameLayout);

Переменная relativeLayout в моем примере — это контейнер, в который вы добавляете все свои элементы. Кроме того, вы должны заменить мой элемент управления View на свой WebView

person Artur Szymański    schedule 22.10.2015
comment
не могу разрешить findViewById, это ошибка, которую я получаю - person Evren Baykan; 22.10.2015
comment
@EvrenBaykan В этом случае я не могу тебе помочь. Вы не знаете основ андроида. Извиняюсь. - person Artur Szymański; 22.10.2015

Я думаю, вы должны поместить свои взгляды в RelativeLayout. Итак, я предполагаю, что вы получаете объект RelativeLayout. Следующий код может работать. Создайте макет:

RelativeLayout mRelativeLayout = new RelativeLayout(context)

Создайте WebView и добавьте его в макет:

WebView mWebView = new WebView(context);
RelativeLayout.LayoutParams paramsWV = new RelativeLayout.LayoutParams(mRelativeLayout.getWidth(), mRelativeLayout.getHeight);
mParamsWM.addRule(RelativeLayout.LayoutParams.FILL_PARENT);//so the web view fill the layout
mWebView.setLayoutParams(mParamsWM);
mWebView.loadData(htmlContent, "text/html", "UTF-8");
mRelativeLayout.addView(mWebView);

Тогда для кнопки

ImageButton mImageButton = new ImageButton(context);
mImageButton.setImageResource(R.drawable.close_button);
RelativeLayout.LayoutParams paramsB = new RelativeLayout.LayoutParams(width, height);
paramsB.addRule(RelativeLayout.ALIGN_PARENT_TOP);
paramsB.addRule(RelativeLayout.ALIGN_PARENT_LEFT);
mImageButton.setLayoutParams(paramsB);
mImageButton.setAdjustViewBounds(true);
mImageButton.setBackgroundDrawable(null);
mRelativeLayout.addView(mImageButton);
mImageButton.setScaleType(ImageView.ScaleType.FIT_CENTER);
person sonic    schedule 22.10.2015
comment
ну, у меня нет относительного объекта макета для использования в этой функции (mRelativeLayout) - person Evren Baykan; 22.10.2015
comment
Затем вы должны начать с создания одного размера, который вы хотите использовать. Этот макет позволит вам разместить свой вид, как вы хотите. - person sonic; 22.10.2015
comment
можете помочь в создании макета? - person Evren Baykan; 22.10.2015
comment
Я редактирую свой ответ, чтобы добавить создание макета. Я также добавляю эту строку mParamsWM.addRule(RelativeLayout.LayoutParams.FILL_PARENT);, чтобы веб-представление заполнило макет. Надеюсь, это сработает. - person sonic; 22.10.2015