将Android屏幕划分为两个相等的一半

时间:2012-07-19 03:59:53

标签: java android android-linearlayout latitude-longitude

我最近开始使用Android。我对Android没有那么多经验。这是我第一次使用Android。我需要将屏幕分成两半,然后执行一些任务。

  1. 将屏幕划分为两个相等的一半后,在后半部分(意味着下半部分)我需要制作一个名为Latitude的标签,然后对应于将显示当前纬度值的Textbox另一个名为Longitude的标签,与另一个Textbox对应,会显示当前的经度值。
  2. 我开始研究这个问题,并取得了一些进展 - 下面是我目前用来将屏幕分成两半的XML文件。

    <?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="vertical" >
    
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1.8"
            android:background="#000000" />
    
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:background="#000000" >
    
            <!-- Latitude Label -->
    
            <TextView
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:text="Latitude"
                android:textColor="#372c24" />
    
            <EditText
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_marginBottom="20dip"
                android:layout_marginTop="5dip"
                android:singleLine="true" />
            <!-- Longitude Label -->
    
            <TextView
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:text="Longitude"
                android:textColor="#372c24" />
    
            <EditText
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_marginTop="5dip"
                android:password="true"
                android:singleLine="true" />
        </LinearLayout>
    
    </LinearLayout>
    

    我的问题是 -

    1. 使用上述XML文件后,我无法在Android屏幕上正确看到我的both labelboth textbox,我的XML文件中是否有任何遗漏?
    2. 其次,我如何在相应的文本框中显示当前的纬度和经度值。
    3. 任何帮助都将受到赞赏,因为我是Android界的新手。

      更新: - 下面是我在绘画中制作的图表,我想要那样的东西。enter image description here

      如果你看屏幕,它分为两部分,在下半部分,有两个标签(纬度和经度),它应该是这样的,并且在每个标签的前面,将有一个文本框将保存相应的纬度和经度值。

      更新代码:当前位置 -

      public class MainActivity extends Activity implements LocationListener {
          private TextView latituteField;
          private TextView longitudeField;
          private LocationManager locationManager;
          private String provider;
      
          private static final String TAG = "CurrentLocation";
      
          @Override
          public void onCreate(Bundle savedInstanceState) {
              super.onCreate(savedInstanceState);
              setContentView(R.layout.activity_main);
              latituteField = (TextView) findViewById(R.id.lat1);
              longitudeField = (TextView) findViewById(R.id.lat2);
      
           // Get the location manager
              locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
              // Define the criteria how to select the location provider -> use
              // default
              Criteria criteria = new Criteria();
              provider = locationManager.getBestProvider(criteria, false);
              locationManager.requestLocationUpdates(provider, 0, 0, this);
              Location location = locationManager.getLastKnownLocation(provider);
              onLocationChanged(location);
          }
      
          @Override
          protected void onDestroy() {
              super.onDestroy();
              locationManager.removeUpdates(this);
          }
      
          @Override
          public void onLocationChanged(Location location) {
             if (location != null) {
                 System.out.println("Provider " + provider + " has been selected.");
                 int lat = (int) (location.getLatitude());
                 int lng = (int) (location.getLongitude());
                 Log.v(TAG, lat+ " "+ lng);
                 latituteField.setText(String.valueOf(lat));
                 longitudeField.setText(String.valueOf(lng));
             } else {
                 latituteField.setText("Provider not available");
                 longitudeField.setText("Provider not available");
             }
          }
      
          @Override
          public void onProviderDisabled(String provider) {
              // TODO Auto-generated method stub
      
          }
      
          @Override
          public void onProviderEnabled(String provider) {
              // TODO Auto-generated method stub
      
          }
      
          @Override
          public void onStatusChanged(String provider, int status, Bundle extras) {
              // TODO Auto-generated method stub
      
          }
      }
      

      但是下面的代码没有在相应的文本框中显示任何纬度或经度值?我做错了什么?

1 个答案:

答案 0 :(得分:3)

  

“使用上面的XML文件后,我无法看到我的标签和   两个文本框都在Android屏幕上正确,我有什么   在我的XML文件中丢失了吗?“

看来,您的LinearLayout标签可能搞砸了。

看看这是否更接近您的目标:

<?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="vertical"
    android:background="@android:color/black" >

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_weight="1"
        android:orientation="vertical" >

        <!-- currently empty -->

    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_weight="1"
        android:orientation="vertical" >

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:orientation="horizontal" >

            <!-- Latitude Label -->

            <TextView
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:text="Latitude"
                android:textColor="#372c24" />

            <EditText
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_marginBottom="20dip"
                android:layout_marginTop="5dip"
                android:layout_weight="0.35"
                android:singleLine="true"
                android:text="test1" />
        </LinearLayout>

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:orientation="horizontal" >

            <!-- Longitude Label -->

            <TextView
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:text="Longitude"
                android:textColor="#372c24" />

            <EditText
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_marginTop="5dip"
                android:layout_weight="0.35"
                android:password="true"
                android:singleLine="true"
                android:text="test2" />
        </LinearLayout>
    </LinearLayout>

</LinearLayout>

照片

enter image description here


  

“其次,我如何能够显示当前的纬度和经度值   相应的文本框。“

你有什么尝试?

你需要获得当前的纬度/经度。 然后只需在EditText上设置文字。