所以我有LinearLayout
有两个视图,我正在为每个视图设置权重。
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/main_layout1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:animateLayoutChanges="true"
android:gravity="center"
android:orientation="horizontal">
<com.sorted.view.SorteddTextView
android:id="@+id/percent1"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginLeft="@dimen/normal"
android:layout_marginRight="@dimen/small"
android:layout_weight="2"
android:background="@color/sky_blue"
android:gravity="center"
android:text="0%"
android:textColor="@color/font_color"
android:textSize="@dimen/font_size_large"
android:visibility="invisible" />
<FrameLayout
android:id="@+id/frame1"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="8">
......
......
</FrameLayout>
</LinearLayout>
现在,我首先将活动的可见性设置为GONE
。然后按下某个按钮,我将可见性设置为VISIBLE
,但我无法看到该视图。
但是,当可见性为INVISIBLE
时,如果我将其更改为VISIBLE
,则其工作正常。
我认为LinearLayout
无法调整其观点(我不知道)。
答案 0 :(得分:1)
您应该将android:weightSum
添加到您的父LinearLayout
<LinearLayout ...
android:id="@+id/main_layout1"
android:weightSum="10"
>
<com.sorted.view.SorteddTextView
android:id="@+id/percent1"
android:layout_weight="2"
/>
<FrameLayout
android:layout_weight="8">
...
</FrameLayout>
</LinearLayout>
我还在onCreate()
中设置了可见性,它提供的布局与我在xml中设置的布局相同
@Override
protected void onCreate(Bundle savedInstanceState) {
...
Button btn1 = (Button)findViewById(R.id.btn1);
Button btn2 = (Button)findViewById(R.id.btn2);
btn1.setVisibility(View.VISIBLE);
btn2.setVisibility(View.VISIBLE);
// btn1.setVisibility(View.VISIBLE);
// btn2.setVisibility(View.GONE);
// btn1.setVisibility(View.VISIBLE);
// btn2.setVisibility(View.INVISIBLE);
}
答案 1 :(得分:0)
如果您尝试放入TableRow?
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/main_layout1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:animateLayoutChanges="true"
android:gravity="center"
android:orientation="horizontal">
<TableRow
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="2">
<com.sorted.view.SorteddTextView
android:id="@+id/percent1"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:gravity="center"
android:text="0%"
android:visibility="invisible" />
</TableRow>
<TableRow
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="8">
<FrameLayout
android:id="@+id/frame1"
android:layout_width="0dp"
android:layout_height="wrap_content"
>
</FrameLayout>
</TableRow>
</LinearLayout>
答案 2 :(得分:0)
这是因为当您将第一个view
设为Visibility GONE
时,它会隐藏它应该如此,并且空间由view
调整,LinearLayout
位于view
内1}}。这意味着现在所有可用空间都被第二个view
占用。现在,当您再次制作第一个visible
LinearLayout
时,您无法看到它,因为它与已占据weightSum
中整个空间的另一个视图重叠
解决此问题的方法是,将LinearLayout
分配给始终确保weight=10
的{{1}},2代表第一个view
,其余8个view
永远是第二个 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/main_layout1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:animateLayoutChanges="true"
android:gravity="center" android:weightSum="10"
android:orientation="horizontal">
。希望它有所帮助。
<script type="text/javascript">
var isNS = (navigator.appName == "Netscape") ? 1 : 0;
if(navigator.appName == "Netscape") document.captureEvents(Event.MOUSEDOWN||Event.MOUSEUP);
function mischandler(){
return false;
}
function mousehandler(e){
var myevent = (isNS) ? e : event;
var eventbutton = (isNS) ? myevent.which : myevent.button;
if((eventbutton==2)||(eventbutton==3)) return false;
}
document.oncontextmenu = mischandler;
document.onmousedown = mousehandler;
document.onmouseup = mousehandler;
var isCtrl = false;
document.onkeyup=function(e)
{
if(e.which == 17)
isCtrl=false;
}
document.onkeydown=function(e)
{
if(e.which == 17)
isCtrl=true;
if(((e.which == 85) || (e.which == 117) || (e.which == 65) || (e.which == 97) || (e.which == 67) || (e.which == 99)) && isCtrl == true)
{
// alert(‘Keyboard shortcuts are cool!’);
return false;
}
}
</script>