Android programmatic FrameLayout used as a button - how to fill_parent?

纵然是瞬间 提交于 2020-01-05 05:56:08

问题


Been stuck on this for a while and tried a few various things.

Basically I've overridden frame layout to create myself a custom button. The frame layout has two children a button and a linearlayout with items in it.

The problem is I'm trying to the get the button to stretch to the size of the frame layout (i.e. fill parent) and it isn't doing. Here is the code, just ask if you want more detail:

public class ReminderButton extends FrameLayout{

private TextView text;
private ImageView video;
private ImageView pdf;
public Button button;
private LinearLayout itemsLayout;

public ReminderButton(Context context, AttributeSet attrs) {
 super(context, attrs);

 this.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.WRAP_CONTENT));
 this.setFocusable(false);

 LinearLayout itemsLayout = new LinearLayout(context);
 itemsLayout.setOrientation(LinearLayout.HORIZONTAL);
 itemsLayout.setFocusable(false);
 itemsLayout.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.FILL_PARENT));
 itemsLayout.setWeightSum(100);

 LinearLayout textLayout = new LinearLayout(context);
 textLayout.setFocusable(false);
 textLayout.setLayoutParams(new LinearLayout.LayoutParams(0,LayoutParams.FILL_PARENT, 80));
 textLayout.setGravity(Gravity.CENTER);

 text = new TextView(context);
 text.setFocusable(false);
 text.setTextColor(Color.WHITE);
 text.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT));
 text.setPadding(5, 3, 3, 3);

 LinearLayout imagesLayout = new LinearLayout(context);
 imagesLayout.setOrientation(LinearLayout.VERTICAL);
 imagesLayout.setFocusable(false);
 imagesLayout.setLayoutParams(new LinearLayout.LayoutParams(0,LayoutParams.FILL_PARENT, 20));
 imagesLayout.setGravity(Gravity.CENTER);

    video = new ImageView(context);
    video.setFocusable(false);
    video.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT));
    video.setImageResource(R.drawable.ic_video_small);

    pdf = new ImageView(context);
    pdf.setFocusable(false);
    pdf.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT));
    pdf.setImageResource(R.drawable.ic_pdf_small);

    // TODO this doesn't go big enough!        
    button = new Button(context);
    button.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.FILL_PARENT));
    button.setBackgroundResource(R.drawable.custom_button);

    // Add the text to its linear layout
    textLayout.addView(text);

    // Add the video and pdf icons to the vertical linear layout i.e. below each other
    imagesLayout.addView(video);
    imagesLayout.addView(pdf);

    // Add the text and the layout containing the images to the horizontal linear layout i.e. next to each other
    itemsLayout.addView(textLayout);
    itemsLayout.addView(imagesLayout);

    // Add the items layout and the buttons layout to the frame i.e. on items on top of the button
    this.addView(button);
    this.addView(itemsLayout);
}

回答1:


Didn't find an answer, but to fix it , I removed the button and just made the base linear layout clickable



来源:https://stackoverflow.com/questions/3575268/android-programmatic-framelayout-used-as-a-button-how-to-fill-parent

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!