微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在自定义LinearLayout中对齐对象?

如何解决在自定义LinearLayout中对齐对象?

| 我有自定义编码的布局来容纳所有孩子。这是代码
public abstract class ItemView extends LinearLayout{
    private ImageView icon;//cell icon
    public static final int iconID=12345;
    private Button accessorButton;//this will not be button ?
    public static final int accessorID=54321;



    public ItemView(Context context) {
        super(context);
    }

    public  void arrange(){

    }
    public  void setView(Context context){  
        int l=super.getLeft();
        int r=super.getRight();
        int t=super.getTop();
        int b=super.getBottom();
        icon=new ImageView(context);
        icon.setimageResource(R.drawable.star);
        addView(icon);
        accessorButton=new Button(context);
        accessorButton.setText(\"accessor\");
        addView(accessorButton);
       // icon.layout(l+5,t+5,l+100,b-5);
        //accessorButton.layout(r-100,r-10,b-5);


    }


    @Override
    protected void onLayout(boolean changed,int l,int t,int r,int b) {
        // Todo Auto-generated method stub
        super.onLayout(changed,l,t,r,b);


    }


}
我有子布局,其中之一是:
public class ItemPlainView extends ItemView{

    private TextView text;

    public ItemPlainView(Context context) {
        super(context);
        setView(context);
    }
    public void setView(Context context){
      super.setView(context);
       text=new TextView(context);
       text.setText(\"plain view text\");
       addView(text);
    }

    @Override
    protected void onLayout(boolean changed,int b) {
        // Todo Auto-generated method stub
    super.onLayout(changed,b);


    }
    public TextView getText() {
        return text;
    }
    public void setText(TextView text) {
        this.text = text;
    }

    @Override
    public void arrange() {
        // Todo Auto-generated method stub

    }
}
当我运行代码时,它自然会给我一个星形图标,一个按钮以及一个TextView。我需要更换对象并调整其大小。对于此示例,我需要在中间的最左边的TextView中放置星形图标,在最右边的地方放置我的按钮。考虑到这种分层视图,我该怎么做? 谢谢     

解决方法

        @dymmeh是完全正确的,您所做的每件事都可以在main.xml中,如下所示: @Steve我按照建议添加了另一个
TextView
,您可能想选择
OR
之前的
TextView
还是
OR
之后的
TextView
ImageView
<?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=\"horizontal\">

    <TextView
        android:drawableLeft=\"@drawable/star\"
        android:layout_width=\"wrap_content\"
        android:layout_height=\"wrap_content\"
        android:text=\"plain view text\"
        android:weight=\"1\"
        />

    <<--OR-->>

    <ImageView
        android:layout_width=\"wrap_content\"
        android:layout_height=\"wrap_content\"
        android:drawableLeft=\"@drawable/star\"
        android:weight=\"1\"
        />
    <TextView
        android:layout_width=\"wrap_content\"
        android:layout_height=\"wrap_content\"
        android:text=\"plain view text\"
        android:weight=\"1\"
        />

    <Button
        android:layout_width=\"wrap_content\"
        android:layout_height=\"wrap_content\"
        android:text=\"accessor\"
        android:weight=\"1\"
        />     
</LinearLayout>
那么您的java类只需要在
super.onCreate();
之后的
onCreate
中调用
setContentView(R.layout.main);
比您拥有的要容易得多。您也可以根据需要轻松地安排任何这些项目。看到LinearLayout,您也可以使用TableLayout,但我认为对于大多数情况而言,它们太复杂了。     ,        使用XML布局要容易得多。我建议只使用那个。但是,如果您确实需要在代码中执行此操作,则可以将中间的TextView设置为具有layout_weight = 1的layout参数。     

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。