0

Я пытаюсь создать относительную компоновку с помощью java. Я бы вставлял логотип в TOP, делился на FOOTER и некоторая информация по середине.Создание относительной компоновки (программно) с большим количеством полей

На данный момент все компоненты попадают на FOOTER, даже если я передаю параметры в заголовок сверху.

Мой Java-код:

package com.clubee.vote; 

import android.app.Activity; 
import android.content.Intent; 
import android.graphics.Bitmap; 
import android.graphics.BitmapFactory; 
import android.os.Bundle; 
import android.view.Gravity; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.GridLayout; 
import android.widget.ImageButton; 
import android.widget.ImageView; 
import android.widget.RelativeLayout; 

public class ResultadoFalho extends Activity{ 


@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.resultadofalho); 

    Bitmap bitmapTop = BitmapFactory.decodeResource(getResources(),R.drawable.bkg_app); 
    Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.sharing); 

    RelativeLayout layoutLogo = (RelativeLayout) findViewById(R.id.ibresultadoFalho); 
    RelativeLayout.LayoutParams paramsLogo = new RelativeLayout.LayoutParams(
      RelativeLayout.LayoutParams.FILL_PARENT, 
      RelativeLayout.LayoutParams.WRAP_CONTENT); 

    ImageView bkgLogo = new ImageView(this); 
    bkgLogo.setLayoutParams(paramsLogo); 
    bkgLogo.setImageBitmap(bitmapTop); 

    layoutLogo.setGravity(Gravity.TOP| Gravity.CENTER_VERTICAL); 
    layoutLogo.addView(bkgLogo); 

    RelativeLayout layout = (RelativeLayout) findViewById(R.id.ibresultadoFalho); 
    RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(
      RelativeLayout.LayoutParams.FILL_PARENT, 
      RelativeLayout.LayoutParams.WRAP_CONTENT); 

    ImageButton sharingButton = new ImageButton(this); 
    sharingButton.setLayoutParams(params); 
    sharingButton.setImageBitmap(bitmap); 

    layout.setGravity(Gravity.CENTER_VERTICAL | Gravity.BOTTOM); 
    layout.addView(sharingButton); 

    sharingButton.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View v) { 
      shareIt(); 
     } 
    }); 
} 

private void shareIt() { 
    Intent sharingIntent = new Intent(android.content.Intent.ACTION_SEND); 
    sharingIntent.setType("text/plain"); 
    String shareBody = "Eu votei! E você, já opinou sobre a atual gestão da presidente do Brasil?"; 
    sharingIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, "Vote, Opine, Compartilhe"); 
    sharingIntent.putExtra(android.content.Intent.EXTRA_TEXT, shareBody); 
    startActivity(Intent.createChooser(sharingIntent, "Compartilhar")); 
    } 
} 

Моя активность XML просто ...

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:id="@+id/ibresultadoFalho" 
android:layout_width="fill_parent" 
android:layout_height="match_parent" 
android:background="#fffcfffa"> 


</RelativeLayout> 
+0

Почему вы используете height wrap_content для всех ваших элементов? И для будущего: попытайтесь построить свои макеты в xml! Это намного проще и проще, чем создавать его из java. Обычно элементы представления должны создаваться в java только тогда, когда вы имеете дело с динамическим отображением. –

+0

Здравствуйте, @IspasClaudiu. Я делаю это только для учебы. Я новичок в Android-разработчике. – Barcat

ответ

0

Вы должны использовать RelativeLayout.LayoutParams.

также проверка эти другие вопросы по SO,

+0

Привет @ Суфиян Гори, tks для ответа. Я пробовал следовать вашим советам и изменять свой код, но теперь возвращение - белый экран. Я отвечу на мой вопрос, вставив новый код. – Barcat

0

EDITED: набираю парам this.addContentView (макет, штр); и теперь это работает. tks много 4 помощи.

После изменения первого кода теперь возвращается белый экран. Я вытащил некоторые части исходного кода, поэтому я бы лучше понял, что делал (правильно или неправильно).

package com.clubee.vote; 

import android.app.Activity;  
import android.content.Intent; 
import android.graphics.Bitmap; 
import android.graphics.BitmapFactory; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.ImageButton; 
import android.widget.ImageView; 
import android.widget.RelativeLayout; 

public class ResultadoFalho extends Activity{ 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.resultadofalho); 

    RelativeLayout layout = new RelativeLayout(this); 

    Bitmap bitmapTop = BitmapFactory.decodeResource(getResources(),R.drawable.bkg_app); 

    ImageView bkgLogo = new ImageView(this); 
    bkgLogo.setId('1'); 
    bkgLogo.setImageBitmap(bitmapTop); 


    RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(
      RelativeLayout.LayoutParams.FILL_PARENT, 
      RelativeLayout.LayoutParams.WRAP_CONTENT); 
    layout.setLayoutParams(lp); 

    lp.addRule(RelativeLayout.ALIGN_PARENT_TOP, bkgLogo.getId()); 

    layout.addView(bkgLogo); 
    } 
} 
Смежные вопросы