Android权重不按预期工作

时间:2015-05-12 10:10:17

标签: android android-linearlayout android-layout-weight

我有一个水平线性布局,宽度= match_parent,weightsum = 5。 如果我插入5个垂直线性布局,每个宽度= 0,权重= 1,所有内容都按预期显示,每个布局都获得相同的宽度。 如果我只添加2个垂直,每个宽度= 0且重量= 1,则它们占用的空间比应有的多。我希望他们也占据1/5的空间。

也许这是正确的行为,他们占用更多的空间,我理解重量/重量的概念是错误的。

感谢您的帮助!

编辑: 我尝试添加一些代码



LinearLayout linear=null;
            LinearLayout.LayoutParams layoutParams= new 
            		LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, 
            		LinearLayout.LayoutParams.WRAP_CONTENT);

linear=new LinearLayout(getApplicationContext());
            		linear.setOrientation(LinearLayout.HORIZONTAL);
            		linear.setLayoutParams(layoutParams);
            		linear.setPadding(15, 0, 15, 10);
            		linear.setWeightSum(Float.valueOf(modulo));
//modulo 5 in my example


LinearLayout linear2=new LinearLayout(getApplicationContext());
LinearLayout.LayoutParams lp1 = new LinearLayout.LayoutParams(0, 
                		LinearLayout.LayoutParams.WRAP_CONTENT, 1f);
if(count%modulo!=modulo-1){
        lp1.setMargins(0, 0, 15, 0);
} else {
        lp1.setMargins(0, 0, 0, 0);
       }
linear2.setLayoutParams(lp1);
linear2.setOrientation(LinearLayout.VERTICAL);




我将布局线性2添加到循环中的线性中 为什么可以单击运行代码:D

3 个答案:

答案 0 :(得分:1)

试试这个

    <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
android:weightSum="5">
<View
    android:layout_width="0dp"
    android:layout_height="match_parent"
    android:background="@android:color/holo_green_light"
    android:layout_weight="1"/>

<View
    android:layout_width="0dp"
    android:layout_height="match_parent"
    android:background="@android:color/holo_blue_bright"
    android:layout_weight="1"/>
</LinearLayout>

答案 1 :(得分:0)

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
android:weightSum="5">
<View
    android:layout_width="0dp"
    android:layout_height="match_parent"
    android:background="Your bg"
    android:layout_weight="2.5"/>

<View
    android:layout_width="0dp"
    android:layout_height="match_parent"
    android:background="Your bg"
    android:layout_weight="2.5"/>
</LinearLayout>

平均分配重量。

答案 2 :(得分:0)

如果逻辑解决方案不起作用,则用

填充其余部分
var ExtractTextPlugin = require('extract-text-webpack-plugin');

module.exports = {
    entry: {
        style: './styles/master.less',
        homepage: './styles/homepage.less',
        messaging: './styles/messaging.less',
        places: './styles/places.less',
        profile: './styles/profile.less',
    },
    output: {
        filename: '_tmp/[name].js'
    },
    module: {
        loaders: [
            {
                test: /\.less$/,
                exclude: /node_modules/,
                loader: ExtractTextPlugin.extract('raw!less')
            }
        ]
    },
    plugins: [
        new ExtractTextPlugin('_tmp/[name].css')
    ]
};

<View
    android:layout_width="0dp"
    android:layout_height="0dp"
    android:layout_weight="3"/> <!-- or whatever the rest is -->

注意:View space = new View(this); // NEVER CREATE VIEWS WITH APP CONTEXT! LinearLayout.LayoutParams spaceParams = new LinearLayout.LayoutParams(0, 0, 3f); linear.addView(space, spaceParams); 窗口小部件在这种情况下不起作用。