2012-02-07 11 views
1

ツールバーからボタンをクリックすると、ボタンの表示を切り替えるツールバーを作成しています。ユーザーが「描画」ボタンをクリックすると、「描画」ボタンの上に目に見えないボタン「鉛筆」と「ペン」が表示されます。「描画」ボタンをもう一度クリックすると、「鉛筆」と「ペン」ボタンは、再び見えなくなります。Androidでのボタンの可視性の問題

私はこの部分は単純です。私は、彼らが表示されませんアクティビティを起動するときに「見えない」ようにいくつかのボタンのvisibiltyを設定している私のxmlファイル内。

btnDrawLineのの.xmlファイル - (12:21 @更新)

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="wrap_content" 
    android:layout_height="fill_parent" > 

<com.odhranlynch.testSection.UserInterface 
    android:id="@+id/UserInterface" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:layout_alignParentTop="true" /> 

<Button 
    android:id="@+id/btnDraw" 
    android:layout_width="80dip" 
    android:layout_height="wrap_content" 
    android:layout_alignParentBottom="true" 
    android:layout_alignParentLeft="true" 
    android:text="Draw" /> 

<Button 
    android:id="@+id/btnDrawLine" 
    android:layout_width="80dip" 
    android:layout_height="wrap_content" 
    android:layout_above="@+id/btnDraw" 
    android:layout_alignParentLeft="true" 
    android:visibility="visible" 
    android:text="Line" /> 

<Button 
    android:id="@+id/btnDrawCurve" 
    android:layout_width="80dip" 
    android:layout_height="wrap_content" 
    android:layout_above="@+id/btnDrawLine" 
    android:layout_alignParentLeft="true" 
    android:visibility="visible" 
    android:text="Curve" /> 

<Button 
    android:id="@+id/btnCutout" 
    android:layout_width="80dip" 
    android:layout_height="wrap_content" 
    android:layout_alignParentBottom="true" 
    android:layout_toRightOf="@+id/btnDraw" 
    android:text="Cutout" /> 

<Button 
    android:id="@+id/btnCutInner" 
    android:layout_width="80dip" 
    android:layout_height="wrap_content" 
    android:layout_above="@+id/btnDraw" 
    android:layout_toRightOf="@+id/btnDraw" 
    android:visibility="visible" 
    android:text="Inner" /> 

<Button 
    android:id="@+id/btnCutOutter" 
    android:layout_width="80dip" 
    android:layout_height="wrap_content" 
    android:layout_alignBaseline="@+id/btnDrawCurve" 
    android:layout_alignBottom="@+id/btnDrawCurve" 
    android:layout_toLeftOf="@+id/btnCancel" 
    android:visibility="visible" 
    android:text="Outter" /> 

<Button 
    android:id="@+id/btnCancel" 
    android:layout_width="80dip" 
    android:layout_height="wrap_content" 
    android:layout_alignParentBottom="true" 
    android:layout_toLeftOf="@+id/btnFinish" 
    android:text="Cancel" /> 

<Button 
    android:id="@+id/btnFinish" 
    android:layout_width="80dip" 
    android:layout_height="wrap_content" 
    android:layout_alignParentBottom="true" 
    android:layout_alignParentRight="true" 
    android:text="Finish" /> 

</RelativeLayout> 

ユーザーが、私は思います、表示されているボタンをクリックする次に、見えないボタンが表示されるように。

ここには、彼らは再現されません!笑私はそれによって混乱している。

誰かが言及してさらにポイントとして親切にも私のために、この上にその光を当てること:)

testActivity.java

package com.odhranlynch.testSection; 

import com.odhranlynch.testSection.R; 
import android.app.Activity; 
import android.os.Bundle; 
import android.util.Log; 
import android.view.View; 

public class testActivity extends Activity { 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.new_product); 

    // Find buttons and give them a name. 
    final View btnDraw = findViewById(R.id.btnDraw); 
    final View btnCutOut = findViewById(R.id.btnCutout); 
    final View btnDrawLine = findViewById(R.id.btnDrawLine); 
    final View btnDrawCurve = findViewById(R.id.btnDrawCurve); 
    final View btnCutInner = findViewById(R.id.btnCutInner); 
    final View btnCutOutter = findViewById(R.id.btnCutOutter); 


    //Draw Button clicked (UI Toolbar). 
    btnDraw.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View view) { 
      //Treat button as a toggle button 
      //So if a sub-button (e.g. Draw Line) is visible, then we know the button has 
      //been toggled to visible so lets now make it invisible. 

      if (btnDrawLine.getVisibility()== View.VISIBLE) { 
       //Its visible. 
       btnDrawLine.setVisibility(View.INVISIBLE); 

       btnDrawCurve.setVisibility(View.INVISIBLE); 
       Log.d("TAG", "INVISIBLE"); 
      } else { 
       // Either gone or invisible 
       btnDrawLine.setVisibility(View.VISIBLE); 
       btnDrawCurve.setVisibility(View.VISIBLE); 
       Log.d("TAG", "VISIBLE"); 
      } 
     } 
    });  

} 
} 

になる場合、私は場合、私は、非常に感謝されます.xmlファイル内に表示されるボタンの可視性を設定するランタイム中に可視性を完全に細かく切り替えることができます!

繰り返しますが、私はいくつかの助けを感謝される:)

+0

期待どおりにログメッセージを印刷していますか?表示される、表示される、表示される、等々... –

+0

ええ、そうです、私はトグルボタンが確実に動作することを知っています。 – Odhran

+0

ええと、btnDrawCurve.setVisibility(View.INVISIBLE)をView.GONEに置き換えてみましたか?ただ大声で考えている。 –

答えて

0

View.INVISIBLEView.GONEに交換してください。

0

あなたのコードが正常に動作します。..

XMLファイル

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
android:orientation="vertical" > 

<TextView 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:text="@string/hello" /> 

<Button 
android:id="@+id/btnDrawLine" 
android:layout_width="80dip" 
android:layout_height="wrap_content" 
android:layout_above="@+id/btnDraw" 
android:layout_alignParentLeft="true" 
android:visibility="invisible" 
android:text="Line" /> 

<Button 
    android:id="@+id/draw" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="draw" /> 

</LinearLayout> 

活動

import android.app.Activity; 
import android.os.Bundle; 
import android.util.Log; 
import android.view.View; 
import android.widget.Button; 

public class DrawCanvasActivity extends Activity { 
private static final String Number1 = "9686801147"; 

/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    final View btnDrawLine = findViewById(R.id.btnDrawLine); 


    Button btnDraw = (Button) findViewById(R.id.draw); 
    btnDraw.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View view) { 
      if (btnDrawLine.getVisibility()== View.VISIBLE) { 
       btnDrawLine.setVisibility(View.INVISIBLE); 
       Log.d("TAG", "INVISIBLE"); 
      } else { 
       btnDrawLine.setVisibility(View.VISIBLE); 
       Log.d("TAG", "VISIBLE"); 
      } 
     } 
    });  
} 
} 

描画ボタンをクリックするとボタンラインが表示されます。ビューの書式設定に問題がある可能性がありますあなたのコード。

+0

うーん、それは変です。 SurfaceViewはこれに干渉しますか?自分のコードで使用されるものを作成します。 .xmlスニペットを更新します... – Odhran

+1

表面ビューの固定幅と高さを設定してみてください。また、描画ボタンはサーフェイスビューの下にあり、描画線は描画の上にあります。したがって、サーフェイスビューが描画ボタンと重なる可能性があります。描画ボタンの下に固定してみてください。これは機能しますか? – user936414

+0

多くのありがとうuser936414 :)私はそれを今働いている。しかし、私は確かにあなたの提案を見ている:) – Odhran

0

あなたが消えたり消えたりしないようにするには、非表示にしたいボタンの周囲にLinearLayoutを追加します。 LinearLayoutはlayout_width = wrap_contentを持ちます。このレイアウトに他の要素のリファラントの位置を設定します。

ボタンの表示/非表示を自由に変更できます。

関連する問題