Home php c# sql c c++ javascript python java go android git linux asp.net django .net node.js ios xcode cocoa iphone mysql tomcat mongodb bash objective-c scala visual-studio apache elasticsearch jar eclipse jquery ruby-on-rails ruby rubygems android-studio spring lua sqlite emacs ubuntu perl docker swift amazon-web-services svn html ajax xml java-ee maven intellij-idea rvm macos unix css ipad postgresql css3 json windows-server vue.js typescript oracle hibernate internet-explorer github tensorflow laravel symfony redis html5 google-app-engine nginx firefox sqlalchemy lucene erlang flask vim solr webview facebook zend-framework virtualenv nosql ide twitter safari flutter bundle phonegap centos Register | Login | Edit Tags | New Questions | 繁体 | 简体


10 questions online user: 46

0
votes
answers
10 views
+10

xmlstarlet通過批處理文件更新不更新/正在工作

1

我有任務計劃程序xml文件,我正在嘗試編輯。xmlstarlet通過批處理文件更新不更新/正在工作

 <?xml version="1.0" encoding="UTF-16"?> 
    <Task xmlns="http://schemas.microsoft.com/windows/2004/02/mit/task" version="1.4"> 
     <RegistrationInfo> 
     <Date>2017-03-12T16:40:52.4111579</Date> 
     <Author>Kevin</Author> 
     <Description>Runs Batch File For Counter</Description> 
     <URI>THETASKTITLEGOESHERE</URI> 
     </RegistrationInfo> 
    <Actions Context="Author"> 
    <Exec> 
     <Command>"ACTIONGOESHERE"</Command> 
    </Exec> 
    </Actions> 
</Task> 

這是我在批處理文件中。

@echo off 
pushd %~dp0 

xml ed -inplace -r "/Task/RegistrationInfo/Author" -v CGL XMLTEST1.xml 
xml ed -inplace -r "/Task/RegistrationInfo/URI" -v CGL-FakeTitle XMLTEST1.xml 
xml ed -inplace -r "/Task/Actions/Exec/Command" -v "C:BatchCounter.bat" XMLTEST1.xml 
pause 

我試過這裏的建議; xmlstarlet update value nothing happens

在末尾添加「> XMLTEST1output.xml」導致一個空文件。 任何建議都會有幫助。謝謝!

+0

選項'-inplace'做了什麼? – Cyrus

+0

某些'xmlstartlet's有一個'--inplace'選項,它保存對原始文件的更改。但是這並不能解釋爲什麼(例如)在我的測試中'.../URI'值不會改變爲CGL-FakeTitle。這些都不是用'-r'或'-u'工作的?任何人都會在「我們」的思想中發現錯誤?謝謝,祝大家好運。 – shellter

+0

並參閱我對上述鏈接的評論。不要使用'xml ... file.xml> file.xml'! – shellter

沙发
0
1

這對我的作品Linux和xmlstarlet:

xmlstarlet edit --inplace  
      -N x="http://schemas.microsoft.com/windows/2004/02/mit/task"  
      -u "//x:Task/x:RegistrationInfo/x:Author" -v "CGL"  
      -u "//x:Task/x:RegistrationInfo/x:URI" -v "CGL-FakeTitle"  
      -u "//x:Task/x:Actions/x:Exec/x:Command" -v "C:BatchCounter.bat" XMLTEST1.xml 

我從-r切換(重命名),以-u更新值。在XMLTEST1.xml中,我用UTF-8替換了UTF-16

+0

謝謝。我嘗試了-u但仍然。它工作。我會試着在明天更換UTF,看看是否有幫助。 – KevinColby650

0
votes
answers
9 views
+10

製作按鈕重新啓動活動

0

好吧,所以我知道這可能看起來很簡單,我的意思是我認爲它是。但基本上我想要restartActivity方法重新啓動活動。製作按鈕重新啓動活動

我做的第一件事就是創建按鈕,並在xml中有這樣的代碼行。 android:onClick="restartActivity"

然後我的類包含restartActivity方法,例如

public void restartActivity() 
{ 
    Intent intent= new Intent(this, MainActivity.class); 
    startActivity(intent); 
} 

當我嘗試這樣結束意外事件發生的是停止工作對話框。所以我的問題只是爲什麼這不起作用。我確定我在正確的佈局中重新啓動了按鈕,我檢查並確保所有需要的引用都已完成。 Android清單是完全正確的。直到我將這兩條線添加出來纔開始崩潰。我還應該提到我的目標api是8,並且其中一個答案是api 11或更高。由於日食「親切」讓我知道。

+0

請添加你的錯誤。 您是否在再次啓動之前關閉活動? – 2013-04-20 04:52:47

+0

您是否嘗試使用重新創建方法? – Daniel 2013-04-20 04:55:10

+0

下面的答案將有助於您的問題,但我認爲你應該確保這是你想要做的。如果您需要刷新「視圖」或更新數據,那麼有更好的方法。從本身內部完全重新啓動'活動'沒有太多的理由 – codeMagic 2013-04-20 05:27:59

沙发
0
0

的點擊可能喜歡

public void restartActivity(View view) 
    { 
     // do your work Here 
     Intent intent= new Intent(currentActivity.this, MainActivity.class); 
     startActivity(intent); 
    } 
板凳
0
1

使用活動上下文。你在點擊按鈕時指的是這個。這指的是當前的情況下,你的情況是按鈕。

Intent intent= new Intent(ActivityName.this, MainActivity.class); 

這將創建相同活動的新實例。

假設您有MainActivity。這是上回

在按鈕點擊啓動相同的活動,並呼籲結束()

Intent t= new Intent(MainActivity.this,MainActivity.class); 
startActivity(t); 
finish(); 

編輯:

在您的第一項活動說按鈕點擊

Intent t= new Intent(FirstActivity.this,SecondActivity.class); 
startActivity(t); 
finish(); 

在您的第二個按鈕點擊活動

Intent t= new Intent(SecondActivity.this,FirstActivity.class); 
startActivity(t); 
finish(); 
+0

因此,等待所有這一切都在我的第二個活動onClick方法?我想我的第二項活動可以推出哪些代碼來重新啓動第一項活動?我想這會是一個更好的方式來做到這一點。 – 2013-04-21 02:45:48

+0

你可以在第二項活動中做同樣的事情。但是會創建一個新的活動實例。在這種情況下,您需要清除後退堆棧。 – Raghunandan 2013-04-21 05:09:10

地板
0
2

活動類已經提供了這種方法:

public void recreate() 

自:API級別11 事業活動與新實例中重新創建。由於配置更改,這會導致與創建Activity時基本相同的流程 - 當前實例將經歷其生命週期到onDestroy(),然後創建一個新實例。

所以,你可以做這樣的事情,

public void Restart() 
{ 
    this.recreate(); 
} 

如果你是活動的以外,後來乾脆:

public void Restart(Context ctx) 
    { 
     Activity a = (Activity)ctx; 
     ctx.recreate(); 
    } 
0
votes
answers
7 views
+10

Sandcastle幫助文件生成器項目沒有顯示在Visual Studio 2017企業

0

我從https://github.com/EWSoftware/SHFB/releases安裝SHFBInstaller_v2017.5.15.0.zip。在完成引導安裝後,我啓動了Visual Studio,打開了一個已經存在的C#控制檯應用程序,當我去添加一個新項目到解決方案時,沒有列出Sandcastle Help File Builder項目。下面是我可以在Visual Studio中看到的選項:Sandcastle幫助文件生成器項目沒有顯示在Visual Studio 2017企業

enter image description here

我重新啓動我的電腦,看看是否會解決什麼,但事實並非如此。我不知道爲什麼我遇到這個問題。我之前使用過沙堡,沒有遇到過這種情況。任何幫助是極大的讚賞。

沙发
0
1

該項目位於文檔類別中。 Visual C#類別用於C#編碼項目,Sandcastle文檔不是。

0
votes
answers
7 views
+10

如何從給定的XSLT文件中獲取版本號。

2

說我有一個XSLT文件象下面這樣:如何從給定的XSLT文件中獲取版本號。

`<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
     xmlns:xs="http://www.w3.org/2001/XMLSchema" 
     xmlns:math="http://www.w3.org/2005/xpath-functions/math" exclude-result- 
     prefixes="xs math" 
     version="3.0">` 

....... and so on. 

我所需要的輸出作爲3.0由於上述文件具有版本=「3.0」。我想使用C#來獲得這個給定的XSLT是字符串格式

沙发
0
1

使用XElement.Parse(yourString).Attribute("version").Value,其中您添加using System.Xml.Linq;。有關使用的API的詳細信息,請參閱https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/concepts/linq/linq-to-xml-overview

+0

如果輸入是一個流而不是字符串? – swifty

+0

那麼,如果你想像任何其他API那樣使用這個API,那麼就開始閱讀它的文檔,類'XElement'有一個'Load'方法https://docs.microsoft.com/en-us/dotnet/api/system .xml.linq.xelement.load?view = netframework-4.7.1,它有一個負載以'Stream'爲例。 –

板凳
0
2

使用XML LINQ:

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Xml; 
using System.Xml.Linq; 

namespace ConsoleApplication1 
{ 
    class Program 
    { 
     const string FILENAME = @"c:	emp	est.xml"; 
     static void Main(string[] args) 
     { 
      XDocument doc = XDocument.Load(FILENAME); 
      string version = (string)doc.Root.Attribute("version"); 
     } 
    } 
} 
0
votes
answers
6 views
+10

反序列化XML文件XmlSerializer的,但一個屬性包含其名稱中的冒號

0

我有如下這個DTD此XML文件:http://www.edrdg.org/jmdict/jmdict_dtd_h.html反序列化XML文件XmlSerializer的,但一個屬性包含其名稱中的冒號

你可以看到,2個元素包含的屬性在他們的名字一個冒號(:) :

L源和光澤可以包含命名xml:lang一個屬性,因爲在這個例子中看到(用於L源元素):

<entry> 
    <ent_seq>1002480</ent_seq> 
    <k_ele> 
     <keb>お転婆</keb> 
    </k_ele> 
    <k_ele> 
     <keb>御転婆</keb> 
    </k_ele> 
    <r_ele> 
     <reb>おてんば</reb> 
    </r_ele> 
    <sense> 
     <pos>&adj-na;</pos> 
     <pos>&n;</pos> 
     <misc>&uk;</misc> 
     <lsource xml:lang="dut">ontembaar</lsource> 
     <gloss>tomboy</gloss> 
    </sense> 
</entry> 

我不如何??確保定義我的課代表lsource元素,在這裏它是現在,但它缺少這個屬性:

[System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.7.2046.0")] 
    [System.SerializableAttribute()] 
    [System.Diagnostics.DebuggerStepThroughAttribute()] 
    [System.ComponentModel.DesignerCategoryAttribute("code")] 
    [System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true, Namespace = "JMdict_e.dtd")] 
    [System.Xml.Serialization.XmlRootAttribute(Namespace = "JMdict_e.dtd", IsNullable = false)] 
    public partial class lsource 
    { 
     private string ls_typeField; 

     private string ls_waseiField; 

     private string valueField; 

     /// <remarks/> 
     [System.Xml.Serialization.XmlAttributeAttribute()] 
     public string ls_type 
     { 
      get 
      { 
       return this.ls_typeField; 
      } 
      set 
      { 
       this.ls_typeField = value; 
      } 
     } 

     /// <remarks/> 
     [System.Xml.Serialization.XmlAttributeAttribute()] 
     public string ls_wasei 
     { 
      get 
      { 
       return this.ls_waseiField; 
      } 
      set 
      { 
       this.ls_waseiField = value; 
      } 
     } 

     /// <remarks/> 
     [System.Xml.Serialization.XmlTextAttribute()] 
     public string Value 
     { 
      get 
      { 
       return this.valueField; 
      } 
      set 
      { 
       this.valueField = value; 
      } 
     } 
    } 

我應該如何命名屬性XmlSerializer的正確識別和解析屬性?我嘗試添加屬性public string xml_lang { get; set; }public string lang { get; set; }但都未能從XML文件解析屬性時XmlSerializer.Deserialize被稱爲

沙发
0
0

該屬性是在未產生併爲此元素/屬性被忽略愉快命名空間。使用名稱空間裝飾lang屬性將起作用:

[System.Xml.Serialization.XmlAttributeAttribute(Namespace = "http://www.w3.org/XML/1998/namespace")] 
public string lang { 
    get;set; 
} 

xml命名空間是W3C定義的標準命名空間。其值可以發現here

0
votes
answers
6 views
+10

PHP SOAP Web Service發送XML作爲參數

1

我必須使用SOAP發送XML文件作爲Web服務的參數。任何幫助,我該怎麼做?PHP SOAP Web Service發送XML作爲參數

And ..什麼是XML Schema(XSD文件)?

沙发
0
1

XML必須作爲字符串傳遞,將被編碼以便封裝在XML SOAP請求中。

在任何情況下,我強烈建議你使用WSDL到PHP發電機如PackageGenerator項目,減輕了請求構建和響應處理,

+0

非常感謝您! – Developer1903

0
votes
answers
6 views
+10

xsl嵌套循環失敗

0

我有一個來自我使用的口徑的xml文件,並且在嵌套xsl:for-each時遇到了問題。xsl嵌套循環失敗

XML文件:

<?xml version='1.0' encoding='utf-8'?> 
<calibredb> 
    <record> 
    <title sort="Demon Under the Microscope, The">The Demon Under the Microscope</title> 
    <authors sort="Hager, Thomas"> 
     <author>Thomas Hager</author> 
    </authors> 
    </record> 
    <record> 
    <title sort="101 Things Everyone Should Know About Math">101 Things Everyone Should Know About Math</title> 
    <authors sort="Zev, Marc &amp; Segal, Kevin B. &amp; Levy, Nathan"> 
     <author>Marc Zev</author> 
     <author>Kevin B. Segal</author> 
     <author>Nathan Levy</author> 
    </authors> 
    </record> 
    <record> 
    <title sort="Biohazard">Biohazard</title> 
    <authors sort="Alibek, Ken"> 
     <author>Ken Alibek</author> 
    </authors> 
    </record> 
    <record> 
    <title sort="Infectious Madness">Infectious Madness</title> 
    <authors sort="WASHINGTON, HARRIET"> 
     <author>Harriet A. Washington</author> 
    </authors> 
    </record> 
    <record> 
    <title sort="Poetry Will Save Your Life">Poetry Will Save Your Life</title> 
    <authors sort="Bialosky, Jill"> 
     <author>Jill Bialosky</author> 
    </authors> 
    </record> 
</calibredb> 

XSL:

<?xml version="1.0" encoding="UTF-8"?> 
<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
<xsl:template match="/"> 
    <html> 
    <body> 
    <h2>My Calibre Collection</h2> 
    <table border="1"> 
     <tr bgcolor="#9acd32"> 
     <th>Title</th> 
     <th>Author</th> 
     </tr> 
     <xsl:for-each select="calibredb/record"> 
     <tr> 
     <td><xsl:value-of select="title" /></td> 
     <td><xsl:for-each select="authors"><xsl:value-of select="author" /></xsl:for-each></td> 
     </tr> 
     </xsl:for-each> 
    </table> 
    </body> 
    </html> 
</xsl:template> 
</xsl:stylesheet> 

看來,如果多個作者的存在,循環無法繼續深入。

任何人都可以給我一個關於如何正確格式化xsl的建議嗎?

謝謝!

沙发
0
0

在XSLT 1.0 xsl:value-of只會給你第一個author的價值。

而是在內部的for-each,儘量選擇authors/author ...

<xsl:for-each select="authors/author"> 
    <xsl:value-of select="." /> 
</xsl:for-each> 

你可能也想輸出一個逗號或其他一些來分隔值...

選擇 authors
<xsl:for-each select="authors/author"> 
    <xsl:if test="position() > 1"> 
     <xsl:text>, </xsl:text> 
    </xsl:text> 
    <xsl:value-of select="."/> 
</xsl:for-each> 
板凳
0
0

這種失敗實際上與嵌套循環無關。 注意,每個record元件具有只有一個authors元件, 所以不需要內xsl:for-each select="authors" (它將使只有1圈)。

問題出在其他地方,即value-of指令。 您的情況是XSLT 1.0關於value-of, 奇怪功能的示例,許多XSLT用戶都不知道。

即使select短語檢索多個節點,然後 打印value-of第一其中,而不是整個序列, 和(IMHO),這是不平均XSLT用戶期望的內容。

只有在版本2.0時,這是以一種更直觀的方式。

value-of指令在XSLT 2.0將在這種情況下 整個序列打印,在它們之間插入的隔板指定 與separator屬性。

所以,如果你可以移動到版本2.0 ,只寫:

<xsl:for-each select="calibredb/record"> 
    <tr> 
    <td><xsl:value-of select="title" /></td> 
    <td><xsl:value-of select="authors/author" separator=", "/></td> 
    </tr> 
</xsl:for-each> 
0
votes
answers
6 views
+10

SQL服務器CONCAT多個值,並返回作爲單列

1

SQL Server 2012的開發版SQL服務器CONCAT多個值,並返回作爲單列

TESTMACHINE

OID MACHINENAME 
--------------- 
1 TEST A 
2 TEST B 
3 TEST C 

TESTDETAIL

OID TESTMACHINEOID TESTID HISTORYID 
------------------------------------- 
1  1   200   100 
2  1   300   250 
3  2   1000  2345 
4  3   100   150 

TestMachineOID是FK到TestMachine

我需要通過分組TestMachineOID將項連接成XML。是否有可能獲得以下所需的輸出?

TESTMACHINEOID TESTMACHINENAME  TEXTXML 
------------------------------------------------------------------------ 
1     TEST A   <REC><TESTID>200</TESTID><HISTORYID>100<HISTORYID><TESTID>300</TESTID><HISTORYID>250<HISTORYID></REC> 
2     TEST B   <REC><TESTID>1000</TESTID><HISTORYID>2345<HISTORYID></REC> 
3     TEST C   <REC><TESTID>100</TESTID><HISTORYID>150<HISTORYID></REC> 
沙发
0
1
drop table #testmachine 
drop table #testdetail 

create table #testmachine (oid int , name nvarchar(10)) 
create table #testdetail (oid int, machineoid int, testid int, historyid int) 

insert into #testmachine (oid, name) values (1,'A') 
insert into #testmachine (oid, name) values (2,'B') 
insert into #testmachine (oid, name) values (3,'C') 

insert into #testdetail (oid, machineoid,testid,historyid) values (1,1,10,20) 
insert into #testdetail (oid, machineoid,testid,historyid) values (2,1,30,40) 
insert into #testdetail (oid, machineoid,testid,historyid) values (3,2,50,60) 
insert into #testdetail (oid, machineoid,testid,historyid) values (4,2,70,80) 
insert into #testdetail (oid, machineoid,testid,historyid) values (5,3,90,100) 


select 
     tm.oid, 
     tm.name, 
     (   
      select testid, historyid 
      from #testdetail td 
      where td.machineoid = tm.oid 
      for xml path('rec') , root('signal') 
     ) as XMLvalue 

from 
     #testmachine tm 

輸出

1 A <signal><rec><testid>10</testid><historyid>20</historyid></rec><rec><testid>30</testid><historyid>40</historyid></rec></signal> 
2 B <signal><rec><testid>50</testid><historyid>60</historyid></rec><rec><testid>70</testid><historyid>80</historyid></rec></signal> 
3 C <signal><rec><testid>90</testid><historyid>100</historyid></rec></signal> 
板凳
0
0

你需要的是一個「for循環」,並用它填充一個表。

循環遍歷testmachine表和每個OID選擇testdetail所有記錄,然後與另一種嵌套for循環與子句添加逐一

SET TESTXML = CONCAT(TESTXML,NEW_VALUE)

0
votes
answers
5 views
+10

兩個不同的佈局不工作在單個活動

1

我有兩個xml佈局與一個活動我用setContentView()調用它們,但是當我調用它調用的第二個視圖,但不工作。 這裏是代碼: 當我點擊第二個佈局顯示的按鈕,但其上的按鈕不起作用。請幫助兩個不同的佈局不工作在單個活動

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    //setContentView(R.layout.activity_reset_pas); 
    setContentView(R.layout.forpasrest); 

    fok.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       // TODO Auto-generated method stub 
       fok.setBackgroundColor(Color.rgb(220, 215, 255)); 
       setContentView(R.layout.activity_reset_pas); 

       flag=false; 
      } 

    }); 

    fback.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       // TODO Auto-generated method stub 
       fback.setBackgroundColor(Color.rgb(220, 215, 255)); 

       Intent intent = new Intent(ResetPasActivity.this,SignInActivity.class); 
       startActivity(intent); 
       finish(); 

      } 
    }); 

    if(flag==false){ 

     ok.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       // TODO Auto-generated method stub 

        Toast.makeText(getApplicationContext(), result, Toast.LENGTH_SHORT).show(); 

      } 
     }); 

     back.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       // TODO Auto-generated method stub 
       back.setBackgroundColor(Color.rgb(220, 215, 255)); 
       Intent intent = new Intent(ResetPasActivity.this,SignInActivity.class); 
       startActivity(intent); 
       finish(); 
      } 
     }); 
    } 
} 
+0

這可能有助於[http://stackoverflow.com/questions/7017428/switching-between-2-layouts-in-android-activity](http://stackoverflow.com/questions/7017428/switching-between- 2-layouts-in-android-activity) – sergiomse 2014-08-31 15:36:56

+0

佈局顯示,但是當我嘗試在第二個佈局上工作時,有點擊按鈕的問題,因爲代碼顯示 – Awais 2014-08-31 15:41:32

+0

當我調用setContentView(second_layout)時,它顯示正常,但它不工作 – Awais 2014-08-31 15:42:20

沙发
0
0

您應該爲第二個XML佈局創建第二個活動,而不是嘗試更改單個活動的佈局。有關詳細信息,請參閱Starting Another Activity

板凳
0
-1

爲了增加sergiome的評論:你應該初始化okback按鈕你在這裏setContentView(R.layout.activity_reset_pas)設置你的第二個佈局。這是修改後的代碼。

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    //setContentView(R.layout.activity_reset_pas); 
    setContentView(R.layout.forpasrest); 

    fok.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       buildSecondLayout(); 
      } 

    }); 

    fback.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       // TODO Auto-generated method stub 
       fback.setBackgroundColor(Color.rgb(220, 215, 255)); 

       Intent intent = new Intent(ResetPasActivity.this,SignInActivity.class); 
       startActivity(intent); 
       finish(); 

      } 
    }); 
} 

private void buildSecondLayout() { 
    fok.setBackgroundColor(Color.rgb(220, 215, 255)); 
    setContentView(R.layout.activity_reset_pas); 

    final Button ok = (Button)findViewById(R.id.yourButtonIdForOk); 
    final Button back = (Button)findViewById(R.id.yourButtonIdForBack); 

    ok.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      // TODO Auto-generated method stub 

      Toast.makeText(getApplicationContext(), result, 
        Toast.LENGTH_SHORT).show(); 

     } 
    }); 

    back.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      // TODO Auto-generated method stub 
      back.setBackgroundColor(Color.rgb(220, 215, 255)); 
      Intent intent = new Intent(ResetPasActivity.this, 
        SignInActivity.class); 
      startActivity(intent); 
      finish(); 
     } 
    }); 
} 

你的代碼的流程看起來相當混亂,我甚至不知道如何向你解釋問題。無論如何,請嘗試一下代碼,看看它是否適合你。

+0

首選的解決方案是使用第二個活動。 – 2014-09-01 02:57:12

+0

爲什麼downvote?我認爲兩次調用setContentView沒有任何問題。作爲參考:http://stackoverflow.com/questions/5808026/side-effects-of-calling-activity-setcontentview-twice-in-a-row 只是因爲你認爲你的解決方案更好,你的聲譽是更高不會給你降低我的權利。我的答案正在起作用,他想看到的唯一一件解決方案就是他的代碼無法正常工作。 – chjarder 2014-09-01 03:26:50

+0

「爲什麼downvote?」因爲我認爲這個答案「沒有用」,因爲它促成了糟糕的編程實踐。創建兩個單獨的活動更清潔,更容易維護。 – 2014-09-01 03:35:09

0
votes
answers
5 views
+10

滾動不能僅在屏幕中間工作

0

我正在開發購物應用程序。在一個活動中,我在表格佈局中有一個項目列表。該表具有標題行和兩個頁腳行。我只想在中間激活滾動。滾動不能僅在屏幕中間工作

爲了實現我有3個TableLayouts。 1只包含標題行。 1包含主項目列表,1包含頁腳行。以下是我的代碼。

<?xml version="1.0" encoding="utf-8"?> 
<GridLayout 
    android:layout_height="fill_parent" 
    android:layout_width="match_parent" 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    xmlns:tools="http://schemas.android.com/tools" 
    tools:context="com.example.ahnaf.homemgt.Cart" 
    android:columnCount="1" 
    android:rowCount="5" 
    > 
    <android.support.design.widget.AppBarLayout 
     android:id="@+id/appBarLayout" 
     android:layout_width="match_parent" 
     android:layout_height="50dp" 
     android:theme="@style/AppTheme.AppBarOverlay" 
     android:background="@android:color/black" 
     app:layout_constraintEnd_toEndOf="parent" 
     app:layout_constraintStart_toStartOf="parent" 
     app:layout_constraintTop_toTopOf="parent"> 


     <Button 
      android:id="@+id/button7" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_gravity="center" 
      android:layout_weight="1" 
      android:background="@android:color/transparent" 
      android:text="HomeMGT" /> 

    </android.support.design.widget.AppBarLayout> 

    <TableLayout 
     android:layout_height="wrap_content" 
     android:layout_width="match_parent" 
     android:stretchColumns="0,1,2,3" 
     > 
     <TableRow 
      android:minHeight="40dp"> 

      <Button 
       android:id="@+id/addItem" 
       style="@style/Widget.AppCompat.Button.Borderless" 
       android:layout_width="wrap_content" 
       android:layout_height="match_parent" 
       android:layout_span="4" 
       android:background="@android:color/holo_blue_dark" 
       android:minHeight="0dp" 
       android:minWidth="0dp" 
       android:onClick="addItem" 
       android:text="Add Item To Cart" 
       android:textAppearance="@style/TextAppearance.AppCompat.Body1" /> 

     </TableRow> 

    </TableLayout> 

    <TableLayout 
     android:layout_height="wrap_content" 
     android:layout_width="match_parent" 
     android:stretchColumns="0,1,2,3" 
     > 
     <TableRow 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:background="@android:color/background_dark" 
      android:gravity="center_horizontal"> 


      <TextView 
       android:id="@+id/textView" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_column="0" 
       android:text="Name" 
       android:textColor="@android:color/background_light" 
       android:textAlignment="center"/> 


      <TextView 
       android:id="@+id/textView2" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_column="1" 
       android:text="Qty" 
       android:textColor="@android:color/background_light" 
       android:textAlignment="center"/> 

      <TextView 
       android:id="@+id/textView3" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_column="1" 
       android:text="Price" 
       android:textColor="@android:color/background_light" 
       android:textAlignment="center"/> 

      <TextView 
       android:id="@+id/textView4" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_column="1" 
       android:text="Subtotal" 
       android:textColor="@android:color/background_light" 
       android:textAlignment="center"/> 


     </TableRow> 

    </TableLayout> 


    <ScrollView> 
     <TableLayout 
      android:layout_height="wrap_content" 
      android:layout_width="match_parent" 
      android:stretchColumns="0,1,2,3" 
      android:id="@+id/myTableLayout"> 

     </TableLayout> 
    </ScrollView> 

    <TableLayout 
     android:layout_height="wrap_content" 
     android:layout_width="match_parent" 
     android:stretchColumns="0,1,2,3" 
     android:layout_gravity="bottom" 
     > 
     <TableRow 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:background="@android:color/background_dark" 
      android:gravity="center_horizontal"> 

      <TextView 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_column="2" 
       android:text="Total" 
       android:textColor="@android:color/background_light" 
       android:textAlignment="center"/> 

      <TextView 
       android:id="@+id/total" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_column="3" 
       android:textColor="@android:color/background_light" 
       android:textAlignment="center"/> 


     </TableRow> 

     <TableRow 
      android:minHeight="40dp"> 

      <Button 
       android:id="@+id/cashOut" 
       style="@style/Widget.AppCompat.Button.Borderless" 
       android:layout_width="wrap_content" 
       android:layout_height="match_parent" 
       android:layout_span="4" 
       android:background="@android:color/holo_blue_dark" 
       android:minHeight="0dp" 
       android:minWidth="0dp" 
       android:onClick="addItem" 
       android:text="Cash Out" 
       android:textAppearance="@style/TextAppearance.AppCompat.Body1" /> 

     </TableRow> 
    </TableLayout> 


</GridLayout> 

起初一切正常,但是當我添加了太多的項目我的滾動不起作用。包含「取出」按鈕和總文本視圖的最後兩行也會消失。我在這裏做錯了什麼?

*****************************用以下代碼解決************ *******

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

    <GridLayout 
     android:layout_height="fill_parent" 
     android:layout_width="match_parent" 
     android:layout_below="@id/appBarLayout" 
     android:columnCount="1" 
     android:rowCount="5" 
     > 

     <TableLayout 
      android:layout_height="wrap_content" 
      android:layout_width="match_parent" 
      android:stretchColumns="0,1,2,3" 
      > 
      <TableRow 
       android:minHeight="40dp"> 

       <Button 
        android:id="@+id/addItem" 
        style="@style/Widget.AppCompat.Button.Borderless" 
        android:layout_width="wrap_content" 
        android:layout_height="match_parent" 
        android:layout_span="4" 
        android:background="@android:color/holo_blue_dark" 
        android:minHeight="0dp" 
        android:minWidth="0dp" 
        android:onClick="addItem" 
        android:text="Add Item To Cart" 
        android:textAppearance="@style/TextAppearance.AppCompat.Body1" /> 

      </TableRow> 

     </TableLayout> 

     <TableLayout 
      android:layout_height="wrap_content" 
      android:layout_width="match_parent" 
      android:stretchColumns="0,1,2,3" 
      > 
      <TableRow 
       android:layout_width="fill_parent" 
       android:layout_height="wrap_content" 
       android:background="@android:color/background_dark" 
       android:gravity="center_horizontal"> 


       <TextView 
        android:id="@+id/textView" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:layout_column="0" 
        android:text="Name" 
        android:textColor="@android:color/background_light" 
        android:textAlignment="center"/> 


       <TextView 
        android:id="@+id/textView2" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:layout_column="1" 
        android:text="Qty" 
        android:textColor="@android:color/background_light" 
        android:textAlignment="center"/> 

       <TextView 
        android:id="@+id/textView3" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:layout_column="1" 
        android:text="Price" 
        android:textColor="@android:color/background_light" 
        android:textAlignment="center"/> 

       <TextView 
        android:id="@+id/textView4" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:layout_column="1" 
        android:text="Subtotal" 
        android:textColor="@android:color/background_light" 
        android:textAlignment="center"/> 


      </TableRow> 

     </TableLayout> 


     <ScrollView 
      android:layout_height="wrap_content" 
      android:layout_width="match_parent"> 
      <!--<LinearLayout--> 
       <!--android:layout_width="match_parent"--> 
       <!--android:layout_height="wrap_content"--> 
       <!--android:orientation="vertical"--> 
       <!--android:id="@+id/myLinearLayout">--> 
       <TableLayout 
        android:layout_width="match_parent" 
        android:layout_height="match_parent" 
        android:stretchColumns="0,1,2,3" 
        android:id="@+id/myTableLayout"> 

       </TableLayout> 





      <!--</LinearLayout>--> 
     </ScrollView> 
    </GridLayout> 

    <GridLayout 
     android:layout_height="wrap_content" 
     android:layout_width="wrap_content" 
     android:layout_alignParentBottom="true" 
     android:columnCount="1" 
     android:rowCount="5" 
     > 
     <TableLayout 
      android:layout_height="wrap_content" 
      android:layout_width="match_parent" 
      android:stretchColumns="0,1,2,3" 
      android:layout_gravity="bottom" 
      > 
      <TableRow 
       android:layout_width="fill_parent" 
       android:layout_height="wrap_content" 
       android:background="@android:color/background_dark" 
       android:gravity="center_horizontal"> 

       <TextView 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:layout_column="2" 
        android:text="Total" 
        android:textColor="@android:color/background_light" 
        android:textAlignment="center"/> 

       <TextView 
        android:id="@+id/total" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:layout_column="3" 
        android:textColor="@android:color/background_light" 
        android:textAlignment="center"/> 


      </TableRow> 

      <TableRow 
       android:minHeight="40dp"> 

       <Button 
        android:id="@+id/cashOut" 
        style="@style/Widget.AppCompat.Button.Borderless" 
        android:layout_width="wrap_content" 
        android:layout_height="match_parent" 
        android:layout_span="4" 
        android:background="@android:color/holo_blue_dark" 
        android:minHeight="0dp" 
        android:minWidth="0dp" 
        android:onClick="addItem" 
        android:text="Cash Out" 
        android:textAppearance="@style/TextAppearance.AppCompat.Body1" /> 

      </TableRow> 
     </TableLayout> 

    </GridLayout> 

</RelativeLayout> 
沙发
0
0

讓我知道,如果下面的代碼爲你工作,我在一個相對佈局包裹一切再分你的網格佈局分爲兩個,第一個是在,而頂部另一種是固定在屏幕的屏幕,頂級的GridView的底部有你滾動視圖是滾動和「頁腳」是粘性使剛剛中間部分卷軸:

<RelativeLayout android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto"> 

    <GridLayout 
     android:layout_height="fill_parent" 
     android:layout_width="match_parent" 
     android:layout_below="@id/appBarLayout" 
     android:columnCount="1" 
     android:rowCount="5" 
     > 

    <TableLayout 
     android:layout_height="wrap_content" 
     android:layout_width="match_parent" 
     android:stretchColumns="0,1,2,3" 
     > 
     <TableRow 
      android:minHeight="40dp"> 

      <Button 
       android:id="@+id/addItem" 
       style="@style/Widget.AppCompat.Button.Borderless" 
       android:layout_width="wrap_content" 
       android:layout_height="match_parent" 
       android:layout_span="4" 
       android:background="@android:color/holo_blue_dark" 
       android:minHeight="0dp" 
       android:minWidth="0dp" 
       android:onClick="addItem" 
       android:text="Add Item To Cart" 
       android:textAppearance="@style/TextAppearance.AppCompat.Body1" /> 

     </TableRow> 

    </TableLayout> 

    <TableLayout 
     android:layout_height="wrap_content" 
     android:layout_width="match_parent" 
     android:stretchColumns="0,1,2,3" 
     > 
     <TableRow 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:background="@android:color/background_dark" 
      android:gravity="center_horizontal"> 


      <TextView 
       android:id="@+id/textView" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_column="0" 
       android:text="Name" 
       android:textColor="@android:color/background_light" 
       android:textAlignment="center"/> 


      <TextView 
       android:id="@+id/textView2" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_column="1" 
       android:text="Qty" 
       android:textColor="@android:color/background_light" 
       android:textAlignment="center"/> 

      <TextView 
       android:id="@+id/textView3" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_column="1" 
       android:text="Price" 
       android:textColor="@android:color/background_light" 
       android:textAlignment="center"/> 

      <TextView 
       android:id="@+id/textView4" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_column="1" 
       android:text="Subtotal" 
       android:textColor="@android:color/background_light" 
       android:textAlignment="center"/> 


     </TableRow> 

    </TableLayout> 


    <ScrollView 
     android:layout_height="wrap_content" 
     android:layout_width="wrap_content"> 
     <LinearLayout 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:orientation="vertical"> 


      <!--/*Add your content here*/--> 


     </LinearLayout> 
    </ScrollView> 
    </GridLayout> 

    <GridLayout 
     android:layout_height="wrap_content" 
     android:layout_width="wrap_content" 
     android:layout_alignParentBottom="true" 
     android:columnCount="1" 
     android:rowCount="5" 
     > 
    <TableLayout 
     android:layout_height="wrap_content" 
     android:layout_width="match_parent" 
     android:stretchColumns="0,1,2,3" 
     android:layout_gravity="bottom" 
     > 
     <TableRow 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:background="@android:color/background_dark" 
      android:gravity="center_horizontal"> 

      <TextView 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_column="2" 
       android:text="Total" 
       android:textColor="@android:color/background_light" 
       android:textAlignment="center"/> 

      <TextView 
       android:id="@+id/total" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_column="3" 
       android:textColor="@android:color/background_light" 
       android:textAlignment="center"/> 


     </TableRow> 

     <TableRow 
      android:minHeight="40dp"> 

      <Button 
       android:id="@+id/cashOut" 
       style="@style/Widget.AppCompat.Button.Borderless" 
       android:layout_width="wrap_content" 
       android:layout_height="match_parent" 
       android:layout_span="4" 
       android:background="@android:color/holo_blue_dark" 
       android:minHeight="0dp" 
       android:minWidth="0dp" 
       android:onClick="addItem" 
       android:text="Cash Out" 
       android:textAppearance="@style/TextAppearance.AppCompat.Body1" /> 

     </TableRow> 
    </TableLayout> 

</GridLayout> 

</RelativeLayout> 
+0

尾行並沒有消失,但仍然滾動不工作... – Ahnaf

+0

你能發表你的更新代碼的要點嗎? –

+0

現在它解決了..使用tablelayout而不是線性佈局...感謝引導我走向正確的方向.. – Ahnaf